Stored XSS : LAB [3]

DATE : 2024/1/17

โ—Exploiting XSS to perform CSRF

์ด๋ฒˆ์— ์‚ดํŽด๋ณผ LAB์€ XSS & CSRF์˜ Collaboration์ด๋‹ค.

์ œ๋ชฉ์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด CSRF๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ XSS ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ด๋ฒˆ LAB์˜ ๋ชฉํ‘œ!

์ตœ์ข…์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฑด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฑด๋ฐ

์ด๋ฅผ ์œ„ํ•ด LAB์—์„œ๋Š” ์‚ฌ์šฉํ•  ๊ณ„์ •์„ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ๋‹ค.

My account ํŽ˜์ด์ง€์—์„œ wiener:peter๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ˆ˜์ •ํ•  ์š”์ฒญ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„ 

์ง์ ‘ ์ด๋ฉ”์ผ์„ ์—…๋ฐ์ดํŠธ ํ•ด๋ณด๋Š” ๊ฒŒ ์ œ์ผ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ฐ”๊ฟ€ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ ๋’ค, packet์„ ํ™•์ธํ•ด๋ณด๋‹ˆ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ธ ์š”์ฒญ์€ POST method์ด๋ฉฐ

email & csrf parameter๊ฐ€ body๋กœ ์ „๋‹ฌ๋˜๊ณ  ์žˆ์Œ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด csrf ๊ฐ’์ด ์–ด๋””์—์„œ ์™”๋‚˜ ํ™•์ธํ•ด๋ดค๋”๋‹ˆ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ My account์—

hidden ์ฒ˜๋ฆฌ๋œ <input> tag์— ๋“ค์–ด ์žˆ์—ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ตœ์ข…์ ์œผ๋กœ ์ด๋ฉ”์ผ์„ ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž์˜ csrf ๊ฐ’์ด ํ•„์š”ํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” csrf ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ๋ฅผ ํŒŒ์•…ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

๊ฒฝ๋กœ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์ „์—! ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ํฌ์ธํŠธ๋ถ€ํ„ฐ ํ™•์ธํ•ด๋ณด๋ฉด

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ๋Œ“๊ธ€ ๋ณธ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ,

์Šคํฌ๋ฆฝํŠธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋Œ“๊ธ€ ๋ณธ๋ฌธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด๋ฒˆ์—” ๊ฒŒ์‹œ๋ฌผ ๋Œ“๊ธ€์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด console ์ฐฝ์— csrf ๊ฐ’์„ ๋„์›Œ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์ž์‹ ์˜ csrf ๊ฐ’์„ ์ž์‹ ์˜ ๋ธŒ๋ผ์šฐ์ €์— ๋„์šฐ๋Š” ๊ฑด ์˜๋ฏธ๊ฐ€ ์—†์ง€๋งŒ,

์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฑด csrf์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ JS ์ƒ ๊ฒฝ๋กœ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•œ ๋’ค, ํ•ด๋‹น ๋ธ”๋กœ๊ทธ๋กœ ๋‹ค์‹œ ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด

์ €์žฅ๋œ ๋Œ“๊ธ€๋„ ํ•จ๊ป˜ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌ ๋˜๋Š” ๊ณผ์ •์—์„œ ์Šคํฌ๋ฆฝํŠธ๋„ ํ•จ๊ป˜ ์˜ค๋ฉด์„œ

console ์ฐฝ์— ์ถœ๋ ฅ๋œ csrf ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

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

ํ•˜๋‚˜์˜ ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด ์œ„์˜ค ๊ฐ™์ด fetch API๋ฅผ ํ™œ์šฉํ•ด ์ž‘์„ฑํ•ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

POST method๋กœ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ์ด๋ฉ”์ผ ๊ฐ’๊ณผ csrf๊ฐ’์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋ฉด

์„œ๋ฒ„๋Š” csrf ๊ฐ’์„ ํ™•์ธํ•œ ํ›„, email์— ๋‹ด๊ธด ๊ฐ’์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ์„ ์ˆ˜์ •ํ•ด์ค„ ๊ฒƒ์ด๋‹ค.

(์‹ค์ œ๋กœ ์‚ฌ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ๋Š” XMLHttpRequest๋ฅผ ์‚ฌ์šฉํ–ˆ์Œ)

๋Œ“๊ธ€์„ ์—…๋กœ๋“œ ํ•œ ํ›„ ์กฐ๊ธˆ๋งŒ ์ง€๋‚˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์— ์ ‘์†ํ•˜๋ฉด์„œ

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด LAB์ด ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ํ—ค๋”๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๐Ÿ‘

Last updated