์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[12์›” 18์ผ] ์ทจ์•ฝ์  ๊ณต๊ฒฉํ•˜๊ธฐ

ljm 2025. 12. 18. 17:52

 

๐Ÿ”“ ์ทจ์•ฝ์ : ์„ธ์…˜ ๊ณ ์ • ๋ฐ CSRF๋ฅผ ํ†ตํ•œ ๊ณ„์ • ํƒˆ์ทจ (Session Fixation via CSRF)

 

OWASP ๋ถ„๋ฅ˜:

A01:2021 – Broken Access Control

(๊ถŒํ•œ ์ œ์–ด ๋ฏธํก) ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๊ถŒํ•œ ๋ฐ–์˜ ๋ฐ์ดํ„ฐ๋‚˜ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์š”์ฒญ์˜ ์ •๋‹น์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” Anti-CSRF ํ† ํฐ์˜ ๋ถ€์žฌ์™€ ๋กœ๊ทธ์ธ ์‹œ ์„ธ์…˜ ์žฌ๋ฐœ๊ธ‰ ๋ฏธํก์ด ๊ฒฐํ•ฉ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

์›์ธ:

  • Absence of Anti-CSRF Token: ์ค‘์š” ์š”์ฒญ(๋กœ๊ทธ์ธ, ๊ฒ€์ƒ‰, ์„ค์ • ๋ณ€๊ฒฝ ๋“ฑ) ์‹œ ์š”์ฒญ์˜ ์ถœ์ฒ˜๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ณ ์œ  ํ† ํฐ์ด ์—†์Œ.
  • Session Management Failure: ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•  ๋•Œ, ๊ธฐ์กด์— ํ• ๋‹น๋œ ์„ธ์…˜ ID๋ฅผ ํŒŒ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ ๋ฐœ๊ธ‰(Regeneration)ํ•˜์ง€ ์•Š์Œ.
  • XSS/CSRF Vulnerability: ๊ฒŒ์‹œํŒ ๋“ฑ์—์„œ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ์„ค์ •์„ ๊ฐ•์ œ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ.

๐Ÿ“Œ ์„ค๋ช… "๊ณต๊ฒฉ์ž๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•œ ์„ธ์…˜ ID(DEADBEEF)๋ฅผ CSRF ๊ณต๊ฒฉ์„ ํ†ตํ•ด ํ”ผํ•ด์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ๊ฐ•์ œ๋กœ ์ฃผ์ž…ํ•˜๊ณ , ํ”ผํ•ด์ž๊ฐ€ ํ•ด

๋‹น ID๋กœ ๋กœ๊ทธ์ธ์„ ์™„๋ฃŒํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ํ”ผํ•ด์ž์™€ ๋™์ผํ•œ ์„ธ์…˜(์—ด์‡ )์„ ๊ณต์œ ํ•˜์—ฌ ๊ณ„์ • ๊ถŒํ•œ์„ ์™„์ „ํžˆ ํƒˆ์ทจํ•จ"

 

 

๐Ÿ” ๊ณต๊ฒฉ ๋„๊ตฌ ๋ฐ ํŽ˜์ด๋กœ๋“œ ์˜ˆ์‹œ

  • ๊ณต๊ฒฉ ์„ธ์…˜ ID: PHPSESSID=DEADBEEF-SESSION-2026
  • ๊ณต๊ฒฉ ํŽ˜์ด๋กœ๋“œ: <script>document.cookie = "PHPSESSID=DEADBEEF-SESSION-2026; path=/";</script>
  • ํ”ผ์‹ฑ URL: http://192.168.16.43/index.php

 

๐Ÿ’ฅ ๋ณด์•ˆ ์˜ํ–ฅ

  • ํ™˜์ž ๊ณ„์ • ํƒˆ์ทจ: ID/PW ์—†์ด๋„ ํ”ผํ•ด์ž์˜ ๋งˆ์ดํŽ˜์ด์ง€, ์ง„๋ฃŒ ๋‚ด์—ญ, ๊ฐœ์ธ์ •๋ณด์— ๋ฌด๋‹จ ์ ‘๊ทผ ๊ฐ€๋Šฅ.
  • ์˜๋ฃŒ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ํŒŒ๊ดด: ํƒˆ์ทจํ•œ ๊ณ„์ •์„ ์ด์šฉํ•ด ๊ธฐ์กด ์ง„๋ฃŒ ์˜ˆ์•ฝ์„ ๋ฌด๋‹จ์œผ๋กœ ์ทจ์†Œํ•˜๊ฑฐ๋‚˜ ์ง„๋ฃŒ ๊ธฐ๋ก์„ ์กฐ์ž‘.
  • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์Šน๊ฒฉ: ๊ด€๋ฆฌ์ž๊ฐ€ ๊ณต๊ฒฉ์ž์˜ ๋‚š์‹œ๊ธ€์„ ์ฝ์„ ๊ฒฝ์šฐ, ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ํƒˆ์ทจ๋‹นํ•˜์—ฌ ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์žฅ์•…๋  ์œ„ํ—˜ ์กด์žฌ.

 

๐Ÿ› ๏ธ ๋Œ€์‘ ๋ฐฉ์•ˆ

  • Session Regeneration: ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ์„ฑ๊ณตํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด ์„ธ์…˜ ID๋ฅผ ํŒŒ๊ธฐํ•˜๊ณ  session_regenerate_id(true) ๋“ฑ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ƒˆ๋กœ์šด ์„ธ์…˜ ID๋ฅผ ๋ฐœ๊ธ‰.
  • Anti-CSRF Token ์ ์šฉ: ๋ชจ๋“  POST ์š”์ฒญ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ์— ๋Œ€ํ•ด ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ ๋ฌด์ž‘์œ„ ํ† ํฐ์„ ํฌํ•จํ•˜๊ณ  ๊ฒ€์ฆ.
  • HttpOnly & Secure Flag: ์ฟ ํ‚ค ์„ค์ • ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก HttpOnly ์†์„ฑ์„ ๋ถ€์—ฌํ•˜๊ณ , session.use_strict_mode๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ๋ฐœ๊ธ‰ํ•˜์ง€ ์•Š์€ ์„ธ์…˜ ID ๊ฑฐ๋ถ€.

 

 

๊ณต๊ฒฉ์ž๋Š” XSS ๊ณต๊ฒฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ

๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์‰ฌ์šด ์ œ๋ชฉ์œผ๋กœ ๊ฑด์˜์‚ฌํ•ญ ๊ฒŒ์‹œํŒ์— ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ƒ๋Œ€๋ฐฉ์ด ๋‚ด๊ฐ€ ์ •ํ•ด๋‘” ์„ธ์…˜ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธํ•˜๋„๋ก ์œ ๋„ํ•จ์œผ๋กœ์จ, ์„œ๋ฒ„๊ฐ€ ๊ทธ ์„ธ์…˜ ID์— ๋กœ๊ทธ์ธ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋Š” ์„ธ์…˜ID๋ฅผ ๊ณ ์ •์‹œํ‚ค๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ์„œ, ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์„ ํด๋ฆญํ•˜๋ฉด ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉฐ, ๊ทธ ์ƒํƒœ๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์„ธ์…˜ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

 

ํ”ผํ•ด์ž๋Š” ๊ฑด์˜์‚ฌํ•ญ ๊ฒŒ์‹œํŒ์—์„œ ํฅ๋ฏธ๋กœ์šด ๊ฒŒ์‹œ๊ธ€์„ ๋ฐœ๊ฒฌํ•ด์„œ ํด๋ฆญ์„ ํ•˜์˜€์ง€๋งŒ, ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.

 

๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ ์ฆ‰์‹œ, ์„ธ์…˜ID๊ฐ€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ง€์ •ํ•œ๋Œ€๋กœ ๊ณ ์ •๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋กœ ํ”ผํ•ด์ž๋Š” ์ž์‹ ์˜ ID๋กœ ๋กœ๊ทธ์ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋กœ๊ทธ์ธ ์ฆ‰์‹œ ์„œ๋ฒ„๋Š” ์„ธ์…˜ ID๋ฅผ ํ”ผํ•ด์ž์˜ ๊ณ„์ •๊ณผ ๋งคํ•‘ํ•˜๊ณ  ๋กœ๊ทธ์ธ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” ํ•ด๋‹น ์„ธ์…˜ ID๋งŒ์œผ๋กœ๋„ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ณต๊ฒฉ์ž์˜ ์›นํŽ˜์ด์ง€์˜ ๊ฐœ๋ฐœ์ž๋ชจ๋“œ์—์„œ ์„ธ์…˜ID ๊ฐ’์„ 'DEADBEEF-SESSION-2026' ์œผ๋กœ ์ˆ˜์ •ํ•˜์˜€๋”๋‹ˆ, ํ•ด๋‹น ํ”ผํ•ด์ž์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ๋œ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

ํ”ผํ•ด์ž๊ฐ€ ์˜ˆ์•ฝํ•œ ์ง„๋ฃŒ๋“ค์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค