Reflected XSS : LAB [3]

DATE : 2024/1/3

โ—Reflected XSS into a JavaScript string with angle brackets HTML encoded

์ด๋ฒˆ LAB์€ Reflected XSS : LAB [2]์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ANGLE BRACKET์ด ํ•„ํ„ฐ๋ง ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

์ง์ ‘์ ์œผ๋กœ <script> tag๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ๋งŒํ•œ ๋‹ค๋ฅธ ํฌ์ธํŠธ๋ฅผ ์ฐพ์•„๋‚ด์•ผ ํ•œ๋‹ค..!

LAB์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด๋ณด๋‹ˆ, ๊ฒ€์ƒ‰ ๋‚ด์šฉ๊ณผ ๋ถ€ํ•ฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ

์ถœ๋ ฅ ๋˜๋Š” ๋ฌธ๊ตฌ ํ˜•ํƒœ๋Š” ๋™์ผํ•˜๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Packet์œผ๋กœ ๊ทธ ๋‚ด์šฉ์„ ํ™•์ธํ•ด๋ณด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๋‹ค๊ฐ€

๋ฌธ๊ตฌ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ

์ด๋•Œ ์ฃผ๋ชฉํ•  ๋ถ€๋ถ„์€ ์—ฌ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋‹ค..!

Packet์„ ์ฃผ๋ฅด๋ฅต ์ฝ๋‹ค ๋ณด๋ฉด ์ค‘๊ฐ„์— <script> tag๋กœ ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋Š”๋ฐ

์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด๋ณด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ search parameter๋ฅผ ๊ฐ€์ ธ๋‹ค ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ ๋’ค

var searchTerms = 'hanhxx';
document.write(
'<img src="/resources/images/tracker.gif?searchTerms='+
encodeURIComponent(earchTerms)+'">');

๊ทธ ๋ณ€์ˆ˜๋ฅผ source๋กœ ์ทจํ•˜๋Š” <img> tag๋ฅผ ๋งŒ๋“œ๋Š” ๋‚ด์šฉ์ด๋‹ค.

์ด๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” ์ฒซ ๋ฒˆ์งธ ํฌ์ธํŠธ๋Š” ๋ณ€์ˆ˜ searchTerms๋กœ

var searchTerms = '___';

๊ฒ€์ƒ‰ ๋‚ด์šฉ์ด ๋นˆ์นธ์— ๊ทธ๋Œ€-๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋“ฏํ–ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด parameter๋กœ ์ „๋‹ฌ๋˜๊ณ  parameter ๊ฐ’์ด ์‘๋‹ต ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋œ๋‹ค??

๋ˆ„๊ฐ€ ๋ด๋„ Reflected XSS ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค.

๊ณต๊ฒฉ ํฌ์ธํŠธ๋ฅผ ์ฐพ์•˜์œผ๋‹ˆ ์œ„์น˜์— ์•Œ๋งž์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜์ž.

/?search=hanhxx'; alert(1);

> var searchTerms = 'hanhxx'; alert(1);'

๊ฒ€์ƒ‰ ๋‚ด์šฉ์ด ๋”ฐ์˜ดํ‘œ ์‚ฌ์ด๋กœ ๋“ค์–ด๊ฐ€๊ธด ํ•˜์ง€๋งŒ ์ƒ๊ด€์—†๋‹ค!

์‚ฝ์ž…ํ•  ์Šคํฌ๋ฆฝํŠธ์— ๋”ฐ์˜ดํ‘œ๋ฅผ ๋„ฃ์–ด ๋งˆ๊ฐํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด searchTerms ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ & ํ• ๋‹นํ•˜๊ณ  ๋‚˜์„œ

alert(1)๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ๋ฆ„์˜ ์ฝ”๋“œ๊ฐ€ ์™„์„ฑ๋œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋กœ ๋Œ์•„์™€ ์ค€๋น„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  Packet์„ ํ™•์ธํ•ด๋ณด๋ฉด

์˜๋„ํ–ˆ๋˜ ๋Œ€๋กœ alert() ํ•จ์ˆ˜๊ฐ€ ์ž˜ ์‚ฝ์ž…๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ €๋ฒˆ LAB์€ ์ด๋ฏธ ๊ฐ–์ถ”์–ด์ ธ ์žˆ๋˜ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด

์ด๋ฒˆ LAB์€ ์ด๋ฏธ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” <script> tag๋กœ ์‚ฌ์šฉ์ž์˜ parameter๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด์„œ

ํƒœ๊ทธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜๊ณ  ์—†์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๐Ÿ‘

Last updated