๐ ์ทจ์ฝ์ : ์ธ์ ๊ณ ์ ๋ฐ 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' ์ผ๋ก ์์ ํ์๋๋, ํด๋น ํผํด์์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ๋๊ฒ์ ์ ์ ์์ต๋๋ค.

ํผํด์๊ฐ ์์ฝํ ์ง๋ฃ๋ค์ ์ทจ์ํฉ๋๋ค
