HTTP Response Smuggling / Desync
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μ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
μ΄ κ²μλ¬Όμ κΈ°μ μ λ€μ λΉλμ€μμ κ°μ Έμμ΅λλ€: https://www.youtube.com/watch?v=suxDcYViwao&t=1343s
HTTP μμ² λκΈ°μ΄ λΉλκΈ°ν
μ°μ , μ΄ κΈ°μ μ HTTP Request Smuggling μ·¨μ½μ μ μ μ©νλ―λ‘, κ·Έκ²μ΄ 무μμΈμ§ μμμΌ ν©λλ€:
μ΄ κΈ°μ κ³Ό μΌλ°μ μΈ HTTP Request Smugglingμ μ£Όμ μ°¨μ΄μ μ ν¬μμμ μμ²μ μ λμ¬λ₯Ό μΆκ°νμ¬ κ³΅κ²©νλ λμ , μ°λ¦¬λ ν¬μμκ° λ°λ μλ΅μ μ μΆνκ±°λ μμ ν κ²μ΄λΌλ μ μ λλ€. μ΄λ HTTP Request Smugglingμ μ μ©νκΈ° μν΄ 1.5κ°μ μμ²μ 보λ΄λ λμ , νλ‘μ μλ΅ λκΈ°μ΄μ λΉλκΈ°ννκΈ° μν΄ 2κ°μ μμ ν μμ²μ 보λμΌλ‘μ¨ μ΄λ£¨μ΄μ§λλ€.
μ΄λ μ°λ¦¬κ° μλ΅ λκΈ°μ΄μ λΉλκΈ°νν μ μκΈ° λλ¬Έμ ν¬μμμ μ λΉν μμ²μ μλ΅μ΄ 곡격μμκ² μ μ‘λκ±°λ, ν¬μμμκ² μλ΅νλ λ΄μ©μ 곡격μκ° μ μ΄νλ μ½ν μΈ λ₯Ό μ£Όμ ν μ μκΈ° λλ¬Έμ λλ€.
HTTP νμ΄νλΌμΈ λΉλκΈ°ν
HTTP/1.1μ μ΄μ μμ²μ κΈ°λ€λ¦¬μ§ μκ³ λ λ€μν 리μμ€λ₯Ό μμ²ν μ μμ΅λλ€. λ°λΌμ, μ€κ°μ νλ‘μκ° μλ€λ©΄, νλ‘μμ μμ μ λ°±μλμ μ μ‘λ μμ²κ³Ό κ·Έλ‘λΆν° μ€λ μλ΅μ λκΈ°νλ μνλ‘ μ μ§νλ κ²μ λλ€.
κ·Έλ¬λ μλ΅ λκΈ°μ΄μ λΉλκΈ°ννλ λ° λ¬Έμ κ° μμ΅λλ€. 곡격μκ° HTTP Response Smuggling 곡격μ 보λ΄κ³ μ΄κΈ° μμ²κ³Ό λ°λ°μ λ μμ²μ λν μλ΅μ΄ μ¦μ μλ΅λλ©΄, λ°λ°μ λ μλ΅μ ν¬μμμ μλ΅ λκΈ°μ΄μ μ½μ λμ§ μκ³ λ¨μν μ€λ₯λ‘ νκΈ°λ©λλ€.
.png)
λ°λΌμ, λ°λ°μ λ μμ²μ΄ λ°±μλ μλ²μμ μ²λ¦¬λλ λ° λ λ§μ μκ°μ΄ 걸리λλ‘ ν΄μΌ ν©λλ€. λ°λΌμ λ°λ°μ λ μμ²μ΄ μ²λ¦¬λ λμ―€μλ 곡격μμμ ν΅μ μ΄ μ’ λ£λ κ²μ λλ€.
νΉμ μν©μμ ν¬μμκ° μμ²μ 보λκ³ λ°λ°μ λ μμ²μ΄ μ λΉν μμ²λ³΄λ€ λ¨Όμ μλ΅λλ©΄, λ°λ°μ λ μλ΅μ΄ ν¬μμμκ² μ μ‘λ©λλ€. λ°λΌμ 곡격μλ ν¬μμκ° βμννβ μμ²μ μ μ΄νκ² λ©λλ€.
κ²λ€κ°, 곡격μκ° μμ²μ μννκ³ ν¬μμ μμ²μ λν μ λΉν μλ΅μ΄ 곡격μμ μμ²λ³΄λ€ λ¨Όμ μλ΅λλ©΄, ν¬μμμ λν μλ΅μ΄ 곡격μμκ² μ μ‘λμ΄ ν¬μμμ λν μλ΅μ νμΉκ² λ©λλ€ (μλ₯Ό λ€μ΄, Set-Cookie ν€λλ₯Ό ν¬ν¨ν μ μμ΅λλ€).
.png)
.png)
λ€μ€ μ€μ²© μ£Όμ
μΌλ°μ μΈ HTTP Request Smugglingκ³Όμ λ λ€λ₯Έ ν₯λ―Έλ‘μ΄ μ°¨μ΄μ μ, μΌλ°μ μΈ λ°λ°μ 곡격μμλ λͺ©νκ° ν¬μμμ μμ² μμ λΆλΆμ μμ νμ¬ μμμΉ λͺ»ν νλμ μννκ² νλ κ²μ λλ€. HTTP Response Smuggling 곡격μμλ μ 체 μμ²μ 보λ΄κΈ° λλ¬Έμ, νλμ νμ΄λ‘λμ μμ κ°μ μλ΅μ μ£Όμ νμ¬ μμ λͺ μ μ¬μ©μλ₯Ό λΉλκΈ°νν μ μμ΅λλ€.
μ λΉν μ¬μ©μμκ² μμ κ°μ μ΅μ€νλ‘μμ λ μ½κ² λ°°ν¬ν μ μμ λΏλ§ μλλΌ, μ΄λ μλ²μ DoSλ₯Ό μ λ°νλ λ°λ μ¬μ©λ μ μμ΅λλ€.
μ΅μ€νλ‘μ μ‘°μ§
μμ μ€λͺ ν λ°μ κ°μ΄, μ΄ κΈ°μ μ μ μ©νκΈ° μν΄μλ μλ²μ λ°λ°μ λ 첫 λ²μ§Έ λ©μμ§κ° μ²λ¦¬λλ λ° λ§μ μκ°μ΄ 걸리λλ‘ ν΄μΌ ν©λλ€.
μ΄ μκ° μλͺ¨ μμ²μ μ°λ¦¬κ° ν¬μμμ μλ΅μ νμΉλ €κ³ ν λ μΆ©λΆν©λλ€. κ·Έλ¬λ λ 볡μ‘ν μ΅μ€νλ‘μμ μννλ €λ©΄, μ΄λ μ΅μ€νλ‘μμ μΌλ°μ μΈ κ΅¬μ‘°κ° λ κ²μ λλ€.
μ°μ HTTP Request Smugglingμ μ μ©ν μ΄κΈ° μμ², κ·Έ λ€μ μκ° μλͺ¨ μμ², κ·Έλ¦¬κ³ ν¬μμμκ² μ μ‘λ μλ΅μ ν¬ν¨νλ 1κ° μ΄μμ νμ΄λ‘λ μμ²μ λλ€.
HTTP μλ΅ λκΈ°μ΄ λΉλκΈ°ν μ μ©
λ€λ₯Έ μ¬μ©μμ μμ² μΊ‘μ²
HTTP Request Smugglingμ μλ €μ§ νμ΄λ‘λμ λ§μ°¬κ°μ§λ‘, ν¬μμμ μμ²μ νμΉ μ μμ΅λλ€. ν κ°μ§ μ€μν μ°¨μ΄μ μ: μ΄ κ²½μ° μλ΅μ λ°μλ μ½ν μΈ λ₯Ό 보λ΄κΈ°λ§ νλ©΄ λλ©°, μ§μμ μΈ μ μ₯μκ° νμνμ§ μμ΅λλ€.
λ¨Όμ , 곡격μλ λ°μλ λ§€κ°λ³μλ₯Ό ν¬ν¨ν μ΅μ’ POST μμ²μ ν¬ν¨νλ νμ΄λ‘λλ₯Ό 보λ΄κ³ , ν° Content-Lengthλ₯Ό μ€μ ν©λλ€.
.png)
κ·Έλ° λ€μ, μ΄κΈ° μμ²(νλμ)μ΄ μ²λ¦¬λκ³ μλ©΄ μ€μΈ μμ²μ΄ μ²λ¦¬λλ λμ(λ Έλμ) ν¬μμλ‘λΆν° λμ°©νλ λ€μ μμ²μ΄ λ°μλ λ§€κ°λ³μ λ°λ‘ λ€μ λκΈ°μ΄μ μΆκ°λ©λλ€:
.png)
κ·Έ ν, ν¬μμλ μλ©΄ μ€μΈ μμ²μ λν μλ΅μ λ°κ² λκ³ , κ·Έ μ¬μ΄μ 곡격μκ° λ λ€λ₯Έ μμ²μ 보λλ€λ©΄, λ°μλ μ½ν μΈ μμ²μ μλ΅μ΄ κ·Έμκ² μ μ‘λ©λλ€.
μλ΅ λΉλκΈ°ν
μ§κΈκΉμ§ μ°λ¦¬λ HTTP Request Smuggling 곡격μ μ μ©νμ¬ ν΄λΌμ΄μΈνΈκ° λ°μ μλ΅μ μ μ΄νλ λ°©λ²κ³Ό, κ·Έ ν ν¬μμλ₯Ό μν μλ΅μ νμΉλ λ°©λ²μ λ°°μ μ΅λλ€.
νμ§λ§ μ¬μ ν μλ΅μ λ λΉλκΈ°νν μ μλ λ°©λ²μ΄ μμ΅λλ€.
HEAD μμ²κ³Ό κ°μ ν₯λ―Έλ‘μ΄ μμ²μ΄ μμΌλ©°, μ΄λ μλ΅ λ³Έλ¬Έμ μ무 μ½ν μΈ λ ν¬ν¨νμ§ μμμΌ νλ©°, GET μμ²μΈ κ²μ²λΌ μμ²μ Content-Lengthλ₯Ό ν¬ν¨ν΄μΌ ν©λλ€.
λ°λΌμ 곡격μκ° HEAD μμ²μ μ£Όμ νλ©΄, λ€μκ³Ό κ°μ μ΄λ―Έμ§μ κ°μ΄:
.png)
κ·Έλ° λ€μ, νλμ μμ²μ΄ 곡격μμκ² μλ΅λλ©΄, λ€μ ν¬μμμ μμ²μ΄ λκΈ°μ΄μ μΆκ°λ©λλ€:
.png)
κ·Έ ν, ν¬μμλ HEAD μμ²μ μλ΅μ λ°κ² λλ©°, μ΄λ Content-Lengthλ ν¬ν¨νμ§λ§ μ½ν μΈ λ μ ν ν¬ν¨νμ§ μμ κ²μ λλ€. λ°λΌμ νλ‘μλ μ΄ μλ΅μ ν¬μμμκ² μ μ‘νμ§ μκ³ , μ΄λ€ μ½ν μΈ λ₯Ό κΈ°λ€λ¦¬κ² λλ©°, μ΄λ μ€μ λ‘ λ Έλμ μμ²μ λν μλ΅μ΄ λ κ²μ λλ€(곡격μκ° μ£Όμ ν):
.png)
μ½ν μΈ νΌλ
μ΄μ μμ λ₯Ό λ°λΌ, ν¬μμκ° λ°μ μλ΅μ λ³Έλ¬Έμ μ μ΄ν μ μκ³ , HEAD μλ΅μ΄ μΌλ°μ μΌλ‘ Content-Typeκ³Ό Content-Lengthλ₯Ό ν€λμ ν¬ν¨νλ€λ κ²μ μκ³ μλ€λ©΄, λ€μκ³Ό κ°μ μμ²μ 보λ΄μ ν¬μμμκ² XSSλ₯Ό μ λ°ν μ μμ΅λλ€. νμ΄μ§κ° XSSμ μ·¨μ½νμ§ μλλΌλ:
.png)
μΊμ μ€μΌ
μ΄μ μ μΈκΈν μλ΅ λΉλκΈ°ν μ½ν μΈ νΌλ 곡격μ μ μ©νμ¬, μΊμκ° ν¬μμκ° μνν μμ²μ λν μλ΅μ μ μ₯νκ³ μ΄ μλ΅μ΄ XSSλ₯Ό μ λ°νλ μ£Όμ λ κ²μ΄λΌλ©΄, μΊμλ μ€μΌλ©λλ€.
XSS νμ΄λ‘λλ₯Ό ν¬ν¨ν μ μμ μΈ μμ²:
.png)
μλ΅μ μ μ₯νλΌλ ν€λλ₯Ό ν¬ν¨ν ν¬μμμ λν μ μμ μΈ μλ΅:
.png)
Warning
μ΄ κ²½μ° βν¬μμβκ° κ³΅κ²©μλΌλ©΄, κ·Έλ μ΄μ μ μμ μΈ μλ΅μΌλ‘ μΊμλ URLμ μ μ΄ν μ μμΌλ―λ‘ μμμ URLμμ μΊμ μ€μΌμ μνν μ μμ΅λλ€.
μΉ μΊμ κΈ°λ§
μ΄ κ³΅κ²©μ μ΄μ 곡격과 μ μ¬νμ§λ§, μΊμμ νμ΄λ‘λλ₯Ό μ£Όμ νλ λμ 곡격μλ μΊμ λ΄μ ν¬μμ μ 보λ₯Ό μ μ₯ν κ²μ λλ€:
.png)
μλ΅ λΆν
μ΄ κ³΅κ²©μ λͺ©νλ λ€μ μλ΅ λΉλκΈ°νλ₯Ό μ μ©νμ¬ νλ‘μκ° 100% 곡격μκ° μμ±ν μλ΅μ μ μ‘νκ² λ§λλ κ²μ λλ€.
μ΄λ₯Ό λ¬μ±νκΈ° μν΄ κ³΅κ²©μλ μλ΅ λ΄μμ μΌλΆ κ°μ λ°μνλ μΉ μ ν리μΌμ΄μ μ μλν¬μΈνΈλ₯Ό μ°ΎμμΌ νλ©°, HEAD μλ΅μ μ½ν μΈ κΈΈμ΄λ₯Ό μμμΌ ν©λλ€.
κ·Έλ λ€μκ³Ό κ°μ μ΅μ€νλ‘μμ λ³΄λΌ κ²μ λλ€:
.png)
첫 λ²μ§Έ μμ²μ΄ ν΄κ²°λκ³ κ³΅κ²©μμκ² μ μ‘λ ν, ν¬μμμ μμ²μ΄ λκΈ°μ΄μ μΆκ°λ©λλ€:
.png)
ν¬μμλ **HEAD μλ΅ + λ λ²μ§Έ μμ² μλ΅μ μ½ν μΈ (λ°μλ λ°μ΄ν°μ μΌλΆ ν¬ν¨)**μ μλ΅μΌλ‘ λ°κ² λ©λλ€:
.png)
κ·Έλ¬λ λ°μλ λ°μ΄ν°κ° HEAD μλ΅μ Content-Lengthμ λ°λΌ ν¬κΈ°κ° μ‘°μ λμ΄ μλ΅ λκΈ°μ΄μμ μ ν¨ν HTTP μλ΅μ μμ±νλ€λ μ μ μ μνμμμ€.
λ°λΌμ λ λ²μ§Έ ν¬μμμ λ€μ μμ²μ 곡격μκ° μμ ν μ μν μλ΅μ λ°κ² λ©λλ€. μλ΅μ΄ 곡격μμ μν΄ μμ ν μ μλμκΈ° λλ¬Έμ, κ·Έλ λν νλ‘μκ° μλ΅μ μΊμνλλ‘ λ§λ€ μ μμ΅λλ€.
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μ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


