Archive for Dev. (junyup2)

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

Wargame & CTF/SegFault

[SegFault] (CSRF) - GET Admin 1

Gearvirus(junyup2) 2024. 1. 17. 23:08

[SegFault] (CSRF)

GET Admin 1

admin ๊ณ„์ •์„ ํƒˆ์ทจํ•ด ๋กœ๊ทธ์ธํ•˜๋ฉด, flag๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํŒŒ์•…

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ CSRF ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์›ํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ , ๊ด€๋ฆฌ์ž visit Bot์— ํ•ด๋‹น ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ admin ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํ•ด๋‹น ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด flag๊ฐ€ ๋‚˜์˜ค๋„๋ก ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

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

ํšŒ์›๊ฐ€์ž…ํ•œ id์˜ ๋’ค์— _amdin์„ ๋ถ™์—ฌ๋„ฃ์€ id๊ฐ€ ๊ณต๊ฒฉํ•  id ์ด๋‹ค.

ex) gear -> gear_admin

๊ณต๊ฒฉํ•  ์•„์ด๋””์™€ CSRF ๊ณต๊ฒฉ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” URL์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์•„์ด๋””์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋œ๋‹ค.

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

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

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” CSRF ์ทจ์•ฝ์ ์„ ์ด์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์šฐ์„  ๋งˆ์ดํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•˜์—ฌ ๊ทธ ๊ณผ์ •์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๊ณผ์ •์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด๋ณด๊ณ  ์ด๋ฅผ Burp๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™•์ธํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์ด ์š”์ฒญ์„ ๋ณด๋ฉด pw ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ณ€๊ฒฝํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜์–ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ ์œ„์™€ ๊ฐ™์ด 'ํšŒ์› ์ •๋ณด ์ˆ˜์ •์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค!' ๋ผ๋Š” ์•Œ๋ฆผ๊ณผ ํ•จ๊ป˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

CSRF Point (์ธ์ฆ ์ •๋ณด)

์œ„์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋ณด๋ฉด, ์ถ”๊ฐ€์ ์œผ๋กœ ์ธ์ฆํ•˜๋Š” ์ธ์ฆ ์ •๋ณด ์—†์ด ๋ณ€๊ฒฝ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

CSRF Point (Method Change)

ํ•ด๋‹น ์š”์ฒญ์˜ ๊ฒฝ์šฐ POST Method๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. URL๋กœ์„œ ์ด์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด GET Method ๋กœ ๋ณ€์กฐํ•˜์—ฌ ์š”์ฒญ์ด ๋™์ผํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค.

POST Method์˜ ์š”์ฒญ์„ GET Method๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์š”์ฒญํ•œ ๊ฒฐ๊ณผ POST์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

XSS Point

XSS๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๋Š” CSRF ์ทจ์•ฝ์ ์€ URL์„ ํด๋ฆญํ•˜๋„๋ก ์œ ๋„ํ•ด์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ XSS ์ทจ์•ฝ์ ์ด ์กด์žฌํ•œ๋‹ค๋ฉด ์ œ๋กœํด๋ฆญ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ณต์ง€์‚ฌํ•ญ์˜ ๊ธ€์“ฐ๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ XSS๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๋ฌธ์ž< ' " >๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ™•์ธํ•ด๋ณธ๋‹ค.

์‘๋‹ต(Response)์„ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ธ€์˜ ๋‚ด์šฉ ๋ถ€๋ถ„์—์„œ ์ž…๋ ฅ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.


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

GET Method (with XSS)

GET Method๋กœ์˜ ๋ณ€์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ด์— ๋”ฐ๋ฅธ ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

ํŽ˜์ด๋กœ๋“œ(Paylaod) - GET

<img src=x onerror="change()">
<script>
function change(){
var i = new Image();
i.src = "http://ctf.segfaulthub.com:7575/csrf_1/mypage_update.php?id=&info=&pw=1234"}
</script>

img ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜์—ฌ image๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•ด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

๊ธ€์“ฐ๊ธฐ์˜ ๋‚ด์šฉ ๋ถ€๋ถ„์— ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. ์ดํ›„ ํ•ด๋‹น ๊ธ€์— ์ ‘๊ทผํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ธ€์˜ ๋‚ด์šฉ์—๋Š” ์—๋Ÿฌ๋‚œ img๊ฐ€ ๋ณด์ด๊ณ  Burp๋ฅผ ํ†ตํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ดํ›„์˜ ์ง„ํ–‰์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธ€์— ์ ‘๊ทผํ•˜๊ณ , ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

์œ„์™€ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


POST Method (with XSS)

POST Method๋ฅผ ์ด์šฉํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ์œ„ํ•œ ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

ํŽ˜์ด๋กœ๋“œ(Paylaod) - POST

<iframe name="stealthFrame" sandbox="allow-scripts" style="display:none"></iframe>
<body onload="document.getElementById('tempForm').submit();">
<form method="POST" action="http://ctf.segfaulthub.com:7575/csrf_1/mypage_update.php"
 id="tempForm" target="stealthFrame">
<input type="hidden" name="pw" value="1234"/>
</form>

iframe์„ ์ด์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธ ํŽ˜์ด์ง€์— ๋น„๋ฐ€๋ฒˆํ˜ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

๊ธ€์“ฐ๊ธฐ์˜ ๋‚ด์šฉ ๋ถ€๋ถ„์— ํŽ˜์ด๋กœ๋“œ(Payload)๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. ์ดํ›„ ํ•ด๋‹น ๊ธ€์— ์ ‘๊ทผํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋กœ์„œ ํ™œ์„ฑํ™” ๋˜์–ด ๋‚ด์šฉ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์ง€๋งŒ Burp๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ดํ›„์˜ ์ง„ํ–‰์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธ€์— ์ ‘๊ทผํ•˜๊ณ , iframe์„ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•œ ํ›„, ๋งˆ์ดํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€๋Š” ๋™์ž‘์ด ์žˆ์ง€๋งŒ, allow-scripts๋ฅผ ์ด์šฉํ•˜์—ฌ, ์‹คํ–‰์€ ๋˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฆฌ๋””๋ ‰์…˜ ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

์œ„์™€ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ด€๋ฆฌ์ž์˜ ์ ‘๊ทผ ์œ ๋„

์ด์ œ ์œ„์˜ ๊ธ€์— ์ ‘๊ทผํ•˜๋Š” URL์„ ๊ด€๋ฆฌ์ž visit Bot์— ๋„ฃ์–ด์ค€๋‹ค.

์ดํ›„ ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜๊ณ  ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ์˜ ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•œ๋‹ค.

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

์œ„์™€ ๊ฐ™์ด ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ์˜ ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด flag ๊ฐ’์ด ํš๋“๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


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

๋ณธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์— ์žˆ์–ด ์ถ”๊ฐ€์ ์ธ ์ธ์ฆ์ •๋ณด ์—†์ด ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๋ฐœ์ƒํ•œ CSRF ์ทจ์•ฝ์ ์ด๋‹ค.
๋˜ํ•œ ๊ฒŒ์‹œ๊ธ€์˜ ๋‚ด์šฉ์— ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฝ์ž… ๊ฐ€๋Šฅํ•œ XSS ์ทจ์•ฝ์ ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ CSRF(with XSS) ์ทจ์•ฝ์ ์œผ๋กœ์„œ ์ด์šฉํ•œ๋‹ค.
CSRF๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฝ์ž…๋œ ๊ธ€์— ์ ‘๊ทผํ•˜๋Š” ๋ชจ๋“  ์ด์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฐ•์ œ๋กœ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์ ์œผ๋กœ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์€ ์ค‘์š”์ •๋ณด์— ๋Œ€ํ•˜์—ฌ ์ ‘๊ทผ์‹œ ์ถ”๊ฐ€์ ์ธ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค.

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