๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/Web

CSRF(Cross-site Request Forgery) ๊ณต๊ฒฉ

by dar0m! 2021. 4. 25.

๊ฐœ๋…

Cross-site Request Forgery(์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ)์˜ ์•ฝ์–ด๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์˜์ง€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰๋™์„ ํ•ด์„œ ํŠน์ • ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•.

๊ณต๊ฒฉ ๋‚œ์ด๋„๊ฐ€ ๋†’์ง€ ์•Š์•„ ํ”ํžˆ ์‚ฌ์šฉ๋œ๋‹ค.

XSS์„ ์ด์šฉํ•œ ๊ณต๊ฒฉ์ด ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์›น์‚ฌ์ดํŠธ๋ฅผ ์‹ ์šฉํ•˜๋Š” ์ ์„ ๋…ธ๋ฆฐ ๊ฒƒ์ด๋ผ๋ฉด,
CSRF๋Š” ํŠน์ • ์›น์‚ฌ์ดํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์˜ 
์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹ ์šฉํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋…ธ๋ฆฐ ๊ฒƒ์ด๋‹ค.

 

๊ณต๊ฒฉ ๊ณผ์ •

CSRF ๊ณต๊ฒฉ ๊ณผ์ • (์ถœ์ฒ˜ : https://stupidsecurity.tistory.com/m/18?category=749410)

๋งŒ์ผ, ์›น ํŽ˜์ด์ง€๊ฐ€ ๋…์ž์  ๊ฐœ๋ฐœ์ด ์•„๋‹Œ ์™ธ๋ถ€์—์„œ ์ด๋ฏธ ๊ฐœ๋ฐœ๋œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์„œ ์กฐ๊ธˆ ์ˆ˜์ •ํ•œ ๊ฒƒ์ด๋ผ๋ฉด,

  1. ๊ณต๊ฒฉ์ž๋Š” ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ•ด๋‹น ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋งคํ•˜์—ฌ ๊ฐœ์ธ ์„œ๋ฒ„์— ์„ค์น˜ํ•œ๋‹ค.
  2. ๊ทธ ๋‹ค์Œ์— ๊ณต๊ฒฉ ๊ฐ€๋Šฅ ํŒจํ„ด์„ ๋ถ„์„ํ•œ๋‹ค.
    1. ์ฃผ๋กœ ๊ณต๊ฒฉ์ž๋“ค์ด ์ฐพ๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ ํŽ˜์ด์ง€๋‚˜ ํƒ€ ์‹œ์Šคํ…œ๊ณผ ๋กœ๊ทธ์ธ ์—ฐ๋™ ์ฃผ์†Œ ํŒจํ„ด๊ฐ™์€ ์ธ์ฆ ๊ด€๋ จ๋œ ์ทจ์•ฝ์ ์„ ์ฐพ๋Š”๋‹ค.
  3. ์œ„์˜ ๋‹จ๊ณ„์—์„œ ๋‚˜์˜จ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•ด ๊ณต๊ฐœ๋œ ๊ฒŒ์‹œํŒ์ด๋‚˜ ๋ฉ”์ผ์„ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๋งํฌ๋ฅผ ์—ด๊ฒŒ ๋งŒ๋“ค๋ฉด ๊ณต๊ฒฉ์ด ์™„๋ฃŒ๋œ๋‹ค.

์˜ˆ์‹œ 1

  1. ์ด์šฉ์ž๋Š” ์›น์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์ •์ƒ์ ์ธ ์ฟ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค
  2. ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งํฌ๋ฅผ ์ด๋ฉ”์ผ์ด๋‚˜ ๊ฒŒ์‹œํŒ ๋“ฑ์˜ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์ด์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
    • http://www.geocities.com/attacker
  3. ๊ณต๊ฒฉ์šฉ HTML ํŽ˜์ด์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฏธ์ง€ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„๋‹ค.
    • <img src= "https://travel.service.com/travel_update?.src=Korea&.dst=Hell">
    • ํ•ด๋‹น ๋งํฌ๋Š” ํด๋ฆญ์‹œ ์ •์ƒ์ ์ธ ๊ฒฝ์šฐ ์ถœ๋ฐœ์ง€์™€ ๋„์ฐฉ์ง€๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ์œ„ํ•œ ๋งํฌ์ด๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ ๋„์ฐฉ์ง€๋ฅผ ๋ณ€์กฐํ•˜์˜€๋‹ค.
  4. ์ด์šฉ์ž๊ฐ€ ๊ณต๊ฒฉ์šฉ ํŽ˜์ด์ง€๋ฅผ ์—ด๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด ๊ณต๊ฒฉ์šฉ URL์„ ์—ฐ๋‹ค.
  5. ์ด์šฉ์ž์˜ ์Šน์ธ์ด๋‚˜ ์ธ์ง€ ์—†์ด ์ถœ๋ฐœ์ง€์™€ ๋„์ฐฉ์ง€๊ฐ€ ๋“ฑ๋ก๋จ์œผ๋กœ์จ ๊ณต๊ฒฉ์ด ์™„๋ฃŒ๋œ๋‹ค. ํ•ด๋‹น ์„œ๋น„์Šค ํŽ˜์ด์ง€๋Š” ๋“ฑ๋ก ๊ณผ์ •์— ๋Œ€ํ•ด ๋‹จ์ˆœํžˆ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•œ ๋ณธ์ธํ™•์ธ ๋ฐ–์— ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์ •์ƒ์ ์ธ ์ด์šฉ์ž์˜ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.

์˜ˆ์‹œ 2

๋งŒ์ผ, A๋ผ๋Š” ์‚ฌ์ดํŠธ์˜ ์‚ฌ์šฉ์ž ๊ฐœ์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ํ•˜๋Š” ์ฃผ์†Œ ํŒจํ„ด์ด 'abc.com/user.do?cmd=user_passwd_change&user=admin&newPwd=1234'๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๋งํฌ๋ฅผ ์‚ฌ์šฉ์ž์˜ ๋ฉ”์ผ๋กœ XSS ํ˜•ํƒœ๋กœ ๋ณด๋‚ด๊ณ  ๋ฉ”์ผ์„ ์ฝ๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ 1234๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์ด๋ฅผ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ณด๋‚ด์„œ ์ผ๋ฐ˜ ๊ณ„์ •์„ ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ๋ฐ”๊พธ๋„๋ก ํ•œ๋‹ค๋“ ์ง€, ์•„๋‹ˆ๋ฉด ๊ด€๋ฆฌ์ž ๊ณ„์ • ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฐ”๊พธ๋Š”๋ฐ ์ด์šฉํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํ•ดํ‚น๋‹นํ•˜๋Š” ๋ฐ๋Š” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

์ฐธ๊ณ ๋กœ, img ํƒœ๊ทธ๋„ GET ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— img๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ๋Š” img๋ฅผ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํ˜น์€ ํ•„ํ„ฐ๋งํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‚˜๋ฌด์œ„ํ‚ค์˜ ๊ฒฝ์šฐ <img src="https://namu.wiki/member/logout"> ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ๋ณผ ๊ฒฝ์šฐ ๋กœ๊ทธ์•„์›ƒ์ด ๋œ๋‹ค. ์ด๋Š” ๋‚˜๋ฌด์œ„ํ‚ค ๋ฟ๋งŒ์ด ์•„๋‹Œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ์˜ ๋ฌธ์ œ

 

CSRF ๋ฐฉ์ง€๋ฒ•

  1. ์ค‘์š” ์ •๋ณด๋Š” ์ฟ ํ‚ค์— ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. XSS ์ทจ์•ฝ์  ํ™•์ธ
  3. Referer ์ฒดํฌ
    • Referer๋Š” HTTP ํ—ค๋”์— ์žˆ๋Š” ์ •๋ณด๋กœ, ํ•ด๋‹น ์š”์ฒญ์ด ์š”์ฒญ๋œ ํŽ˜์ด์ง€์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ฐฉ๋ฒ•์ด ๊ฐ„๋‹จํ•˜์—ฌ ์†Œ๊ทœ๋ชจ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ฃผ๋กœ ์ด์šฉ๋œ๋‹ค.
    • Paros, Zap, Fiddler์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์กฐ์ž‘๊ฐ€๋Šฅํ•œ ๋‹จ์ ์ด ์žˆ๋‹ค.
  4. ์„ธ์…˜์— ์ž„์˜ ๋‚œ์ˆ˜(ํ† ํฐ)๋ฅผ ๋ฐœ๊ธ‰
    • ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์„ธ์…˜์— ์ž„์˜ ๋‚œ์ˆ˜๋ฅผ ๋ฐœ๊ธ‰ํ•ด์„œ, ํ•ด๋‹น ๋‚œ์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ ํ•ด๋‹น ๋™์ž‘๋“ค์ด ์ด๋ฃจ์–ด์ง€๋ฉด ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ง๋กœ ๋ณ€๊ฒฝ์„ ์˜๋„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ณ€๊ฒฝ์„ํ•˜๋Š” ๋ฐฉ๋ฒ•.
    • ๋ณ€๊ฒฝ ์‹œ์— CAPTCHA๋ฅผ ์ด์šฉํ•˜์—ฌ CAPTCHA ์ธ์ฆ์ฝ”๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ํ‹€๋ฆฌ๋ฉด ๊ฑฐ๋ถ€ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•
  5. GET/POST ๊ตฌ๋ถ„
    1. img ํƒœ๊ทธ ๋“ฑ์„ ์ด์šฉํ•  ๊ฒฝ์šฐ GET ์š”์ฒญ์œผ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , form์„ ์ด์šฉํ•ด ๊ฐ’์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ POST๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  6. ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ
    • ๋Œ€๊ฐœ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์œ„์˜ ๋ฐฉ๋ฒ•๋“ค์„ ํ†ตํ•ฉํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
    • ์œ„์˜ ๋ฐฉ๋ฒ•๋“ค์„ ์ผ์ผ์ด ์ ์šฉํ•˜๊ธฐ ๊ท€์ฐฎ๋‹ค๋ฉด ์ฐพ์•„๋ณด๊ณ  ์ ์šฉํ•ด๋ณด์ž.

 

์ฐธ๊ณ 

 

'๐Ÿ“ŒCS > Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Web] Web Server ์™€ WAS์˜ ์ฐจ์ด  (0) 2021.08.04
[Web] GET๊ณผ POST ์ฐจ์ด  (0) 2021.08.03
XSS(Cross-site Scripting) ๊ณต๊ฒฉ  (0) 2021.04.25
[Web] param vs query vs body  (2) 2021.04.18
[Web] CORS(Cross-Origin Resource Sharing)  (0) 2021.04.18

๋Œ“๊ธ€