LFI2RCE via Eternal waiting
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
κΈ°λ³Έ μ 보
κΈ°λ³Έμ μΌλ‘ PHPμ νμΌμ΄ μ
λ‘λλλ©΄ (μμνμ§ μλλΌλ) **php[a-zA-Z0-9]{6}**μ κ°μ μ΄λ¦μ μμ νμΌμ΄ /tmpμ μμ±λ©λλ€. κ·Έλ¬λ μΌλΆ λ컀 μ΄λ―Έμ§μμλ μμ±λ νμΌμ μ«μκ° ν¬ν¨λμ§ μλ κ²½μ°λ 보μμ΅λλ€.
λ‘컬 νμΌ ν¬ν¨μμ μ λ‘λλ νμΌμ ν¬ν¨ν μ μλ€λ©΄ RCEλ₯Ό μ»μ μ μμ΅λλ€.
κΈ°λ³Έμ μΌλ‘ PHPλ λ¨μΌ μμ²μμ 20κ°μ νμΌλ§ μ
λ‘λν μ μλλ‘ νμ©ν©λλ€ (μ€μ μ /etc/php/<version>/apache2/php.iniμ μμ΅λλ€):
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
λν, μ μ¬μ μΈ νμΌ μ΄λ¦μ μλ 62*62*62*62*62*62 = 56800235584μ λλ€.
λ€λ₯Έ κΈ°μ λ€
λ€λ₯Έ κΈ°μ λ€μ PHP νλ‘ν μ½μ 곡격νλ λ° μμ‘΄ν©λλ€(κ²½λ‘μ λ§μ§λ§ λΆλΆλ§ μ μ΄ν μ μλ€λ©΄ λΆκ°λ₯ν©λλ€), νμΌμ κ²½λ‘λ₯Ό λ
ΈμΆμν€κ±°λ, μμλλ νμΌμ μ
μ©νκ±°λ, PHPκ° μΈκ·Έλ©ν
μ΄μ
μ€λ₯λ₯Ό κ²ͺκ² νμ¬ μ
λ‘λλ μμ νμΌμ΄ μμ λμ§ μλλ‘ νλ κ²μ
λλ€.
μ΄ κΈ°μ μ λ§μ§λ§ κΈ°μ κ³Ό λ§€μ° μ μ¬νμ§λ§ μ λ‘ λ°μ΄λ₯Ό μ°Ύμ νμκ° μμ΅λλ€.
μμν λκΈ° κΈ°μ
μ΄ κΈ°μ μμλ μλ κ²½λ‘λ§ μ μ΄νλ©΄ λ©λλ€. νμΌμ μ λ‘λνκ³ LFIκ° λλμ§ μλλ‘ λ§λ€ μ μλ€λ©΄, μ°λ¦¬λ βμΆ©λΆν μκ°βμ κ°μ§κ² λμ΄ μ λ‘λλ νμΌμ λΈλ£¨νΈ ν¬μ€νκ³ μ°Ύμ μ μμ΅λλ€.
μ΄ κΈ°μ μ μ₯μ :
- ν¬ν¨λ νμΌ λ΄μμ μλ κ²½λ‘λ§ μ μ΄νλ©΄ λ©λλ€.
- nginxλ λ‘κ·Έ νμΌμ λν μμμΉ λͺ»ν μ κ·Ό μμ€μ΄ νμνμ§ μμ΅λλ€.
- μΈκ·Έλ©ν μ΄μ μ€λ₯λ₯Ό μΌμΌν€κΈ° μν΄ 0μΌμ΄ νμνμ§ μμ΅λλ€.
- κ²½λ‘ λ ΈμΆμ΄ νμνμ§ μμ΅λλ€.
μ΄ κΈ°μ μ μ£Όμ λ¬Έμ λ λ€μκ³Ό κ°μ΅λλ€:
- νΉμ νμΌμ΄ μ‘΄μ¬ν΄μΌ ν©λλ€(λ μμ μ μμ΅λλ€).
- λ―ΈμΉ μμ μ μ¬μ νμΌ μ΄λ¦: 56800235584
- μλ²κ° μ«μλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ μ΄ μ μ¬μ μμ: 19770609664
- κΈ°λ³Έμ μΌλ‘ λ¨μΌ μμ²μμ 20κ° νμΌλ§ μ λ‘λν μ μμ΅λλ€.
- μ¬μ© μ€μΈ μλ²μ μ΅λ λ³λ ¬ μμ μ μ.
- μ΄μ μ μ νκ³Ό ν¨κ» μ΄ μ νμ μ΄ κ³΅κ²©μ΄ λ무 μ€λ μ§μλκ² λ§λ€ μ μμ΅λλ€.
- PHP μμ²μ νμμμ. μ΄μμ μΌλ‘λ μ΄ μμ²μ΄ μμν΄μΌ νκ±°λ μμλ‘ μ λ‘λλ νμΌμ μμ νμ§ μκ³ PHP νλ‘μΈμ€λ₯Ό μ’ λ£ν΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ μ΄κ²λ λ¬Έμ κ° λ κ²μ λλ€.
κ·Έλ λ€λ©΄, μ΄λ»κ² PHP ν¬ν¨μ λλμ§ μκ² λ§λ€ μ μμκΉμ? νμΌ **/sys/kernel/security/apparmor/revision**μ ν¬ν¨μν€κΈ°λ§ νλ©΄ λ©λλ€ (μνκΉκ²λ Docker 컨ν
μ΄λμμλ μ¬μ©ν μ μμ΅λλ€β¦).
κ·Έλ₯ νΈμΆν΄ 보μΈμ:
php -a # open php cli
include("/sys/kernel/security/apparmor/revision");
Apache2
κΈ°λ³Έμ μΌλ‘ Apacheλ 150κ°μ λμ μ°κ²°μ μ§μνλ©°, https://ubiq.co/tech-blog/increase-max-connections-apache/μ λ°λ₯΄λ©΄ μ΄ μ«μλ₯Ό μ΅λ 8000κΉμ§ λ릴 μ μμ΅λλ€. μ΄ λͺ¨λκ³Ό ν¨κ» PHPλ₯Ό μ¬μ©νλ €λ©΄ λ€μμ λ°λ₯΄μΈμ: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04.
κΈ°λ³Έμ μΌλ‘ (λ΄ ν μ€νΈμμ λ³Ό μ μλ―μ΄) PHP νλ‘μΈμ€λ μμν μ§μλ μ μμ΅λλ€.
μνμ ν΄λ΄ μλ€:
- 149κ°μ μ°κ²°μ μ¬μ©νμ¬ 149 * 20 = 2980κ°μ μμ νμΌμ μμ±ν μ μμ΅λλ€.
- κ·Έλ° λ€μ, λ§μ§λ§ μ°κ²°μ μ¬μ©νμ¬ λΈλ£¨νΈ ν¬μ€λ₯Ό μνν©λλ€.
- 10 μμ²/μ΄μ μλλ‘ μκ°μ λ€μκ³Ό κ°μ΅λλ€:
- 56800235584 / 2980 / 10 / 3600 ~= 530μκ° (265μκ°μ 50% νλ₯ )
- (μ«μ μμ΄) 19770609664 / 2980 / 10 / 3600 ~= 185μκ° (93μκ°μ 50% νλ₯ )
Warning
μ΄μ μμ μμ μ°λ¦¬λ λ€λ₯Έ ν΄λΌμ΄μΈνΈλ₯Ό μμ ν DoSνκ³ μλ€λ μ μ μ μνμΈμ!
Apache μλ²κ° κ°μ λκ³ 4000κ°μ μ°κ²°μ λ¨μ©ν μ μλ€λ©΄ (μ΅λ μ«μμ μ λ°). μ°λ¦¬λ 3999*20 = 79980 νμΌμ μμ±ν μ μμΌλ©°, μκ°μ μ½ 19.7μκ° λλ 6.9μκ°μΌλ‘ μ€μ΄λ€ κ²μ
λλ€ (10μκ°, 3.5μκ° 50% νλ₯ ).
PHP-FMP
μ μμ μΈ php λͺ¨λ λμ μΉ νμ΄μ§κ° PHP-FMPλ₯Ό μ¬μ©νμ¬ PHP μ€ν¬λ¦½νΈλ₯Ό μ€ννλ κ²½μ° (μ΄κ²μ μΉ νμ΄μ§μ ν¨μ¨μ±μ ν₯μμν€λ―λ‘ μΌλ°μ μΌλ‘ λ°κ²¬λ©λλ€), κΈ°μ μ κ°μ νκΈ° μν΄ ν μ μλ λ€λ₯Έ λ°©λ²μ΄ μμ΅λλ€.
PHP-FMPλ **/etc/php/<php-version>/fpm/pool.d/www.conf**μμ request_terminate_timeout λ§€κ°λ³μλ₯Ό ꡬμ±ν μ μκ² ν΄μ€λλ€.
μ΄ λ§€κ°λ³μλ PHPμ λν μμ²μ΄ μ’
λ£λμ΄μΌ νλ μ΅λ μ΄ μλ₯Ό λνλ
λλ€ (κΈ°λ³Έμ μΌλ‘ 무ννμ§λ§, λ§€κ°λ³μκ° μ£Όμ ν΄μ λλ©΄ 30μ΄). PHPκ° μμ²μ μ²λ¦¬νλ λμ μ§μ λ μ΄ μκ° μ§λλ©΄, μμ²μ΄ μ’
λ£λ©λλ€. μ΄λ μμ²μ΄ μμ νμΌμ μ
λ‘λνκ³ μμλ κ²½μ°, PHP μ²λ¦¬κ° μ€λ¨λμκΈ° λλ¬Έμ, ν΄λΉ νμΌμ΄ μμ λμ§ μμ κ²μ μλ―Έν©λλ€. λ°λΌμ μμ²μ΄ κ·Έ μκ°μ μ§μν μ μλ€λ©΄, μμ λμ§ μλ μμ² κ°μ μμ νμΌμ μμ±ν μ μμΌλ©°, μ΄λ νμΌμ μ°Ύλ κ³Όμ μ κ°μννκ³ λͺ¨λ μ°κ²°μ μλͺ¨νμ¬ νλ«νΌμ λν DoS νλ₯ μ μ€μ
λλ€.
λ°λΌμ DoSλ₯Ό νΌνκΈ° μν΄ κ³΅κ²©μκ° λμμ 100κ°μ μ°κ²°λ§ μ¬μ©ν κ²μ΄λΌκ³ κ°μ νκ³ , php-fmpμ μ΅λ μ²λ¦¬ μκ°μΈ **request_terminate_timeout**μ΄ 30μ΄λΌκ³ κ°μ ν©λλ€. λ°λΌμ μ΄λΉ μμ±ν μ μλ μμ νμΌμ μλ 100*20/30 = 66.67μ
λλ€.
κ·Έλ° λ€μ, 10000κ°μ νμΌμ μμ±νκΈ° μν΄ κ³΅κ²©μλ: **10000/66.67 = 150μ΄**κ° νμν©λλ€ ( 100000κ°μ νμΌμ μμ±νλ λ°λ 25λΆμ΄ μμλ©λλ€).
κ·Έλ° λ€μ, 곡격μλ μ΄ 100κ°μ μ°κ²°μ μ¬μ©νμ¬ λΈλ£¨νΈ ν¬μ€ κ²μμ μνν μ μμ΅λλ€. 300 req/sμ μλλ₯Ό κ°μ ν λ, μ΄λ₯Ό νμ©νλ λ° νμν μκ°μ λ€μκ³Ό κ°μ΅λλ€:
- 56800235584 / 10000 / 300 / 3600 ~= 5.25μκ° (2.63μκ°μ 50% νλ₯ )
- (100000κ°μ νμΌλ‘) 56800235584 / 100000 / 300 / 3600 ~= 0.525μκ° (0.263μκ°μ 50% νλ₯ )
μ, EC2 μ€κ° ν¬κΈ° μΈμ€ν΄μ€μμ 100000κ°μ μμ νμΌμ μμ±νλ κ²μ΄ κ°λ₯ν©λλ€:
.png)
Warning
νμμμμ νΈλ¦¬κ±°νκΈ° μν΄μλ μ·¨μ½ν LFI νμ΄μ§λ₯Ό ν¬ν¨νλ κ²λ§μΌλ‘λ μΆ©λΆνλ―λ‘, μμν ν¬ν¨ 루νμ λ€μ΄κ°λλ€.
Nginx
κΈ°λ³Έμ μΌλ‘ Nginxλ λμμ 512κ°μ λ³λ ¬ μ°κ²°μ μ§μνλ κ²μΌλ‘ 보μ΄λ©° (μ΄ μ«μλ κ°μ λ μ μμ΅λλ€).
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


