CSRF ๋์ ๋ฐ ์ฐํ
CSRF๋ ํผํด์๊ฐ ์๋ฒ๋ก ์์์(๊ณต๊ฒฉ์๊ฐ ์ํ๋) ์์ฒญ์ ๋ณด๋ด๊ฒ ๋ง๋๋ ๊ณต๊ฒฉ์ด๋ค.
CSRF ๊ณต๊ฒฉ์ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
CSRF ๊ณต๊ฒฉ ์ ์ฐจ
1. ์ค์ํ ์์ฒญ ์๋ณ
(์ค์ํ๋ค๊ณ ์๊ฐ๋๋ ์์ฒญ์ ์๋ณํ๋ ๊ฒ์ด ์ค์ํ๋ค.)
2. ๊ทธ ์์ฒญ์ ๋ง๋ค ์ ์๋์ง ์ฒดํฌ
(์ธ์ฆ ์ ๋ณด๊ฐ ์๋์ง ํ์ธํ๊ณ , ์๋ค๋ฉด CSRF ์ทจ์ฝ์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ค.)
3. GET Method ์ฒดํฌ
(POST Method๋ผ๋ฉด GET Method๋ก ๋ฐ๊ฟ์ ๋ณด๋ด๋ณด๊ณ ๋๋์ง ํ์ธํ๋ค.)
POST Method๋ก๋ง ์ฒ๋ฆฌ๋๋๋ก ๊ตฌํ ํ๋ค๊ณ ๋ฐฉ์ด๋๋ ๊ฒ์ ์๋๋ค.
๋์ - POST Method
4. CSRF ๊ณต๊ฒฉ(with POST Method)
> XSS ์ทจ์ฝ์ ์ด ์๋์ง ํ์ธ
> POST Form Tag๋ฅผ ํ์ฉ
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๊ณต๊ฒฉ์๊ฐ ๋ฏธ๋ฆฌ ์ธํ ํ ์ ์๋ค๋ ๊ฒ์ด ์ํํ ๊ฒ์ด๋ค. ์ฆ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด๋ฏธ ์๊ณ ์๋ค๋ ๊ฒ์ธ๋ฐ ์ด์ ๋ํ์ฌ ๋์ํ๊ธฐ ์ํด์๋ ํ ํฐ์ ์ถ๊ฐํ ์ ์๋ค.
๋์ - CSRF Token
๊ณต๊ฒฉ์๊ฐ ๋ฏธ๋ฆฌ ์ธํ ํ ์ ์๋ ๊ฐ์ ์ถ๊ฐํ๋ค๋ ๊ฒ์ด๋ค.
ํ ํฐ์ ํด๋น ํ์ด์ง์ ์ ์ ํด์ผ๋ง ์์ฑ๋๋ ๋๋คํ ๊ฐ์ผ๋ก์ ์์กฐํ ์ ์๋ ๊ฐ์ด ๋๋ค.
1. <hidden> - random ๊ฐ ์์ฑ
2. DB or Session์ ์ ์ฅ
3. ํด๋น ํ์ด์ง์ ์ ์ํ ๋๋ง๋ค ๋ฃ์ด์ ๋ณด๋ด์ค.
5. CSRF ๊ณต๊ฒฉ (Bypass CSRF Token)
๋ค๋ง ํด๋น ๊ณต๊ฒฉ์ XSS ์ทจ์ฝ์ ์ด ์กด์ฌํด์ผ๋ง ์ฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
XSS
> iframe
๋์ - Referer
referer ํค๋(header)๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
referer ํค๋๋ '์ด ์์ฒญ์ด ์ด๋ ํ์ด์ง์์ ์์ฒญํ ๊ฒ์ธ๊ฐ?' ๋ฅผ ํ์ธํ๋ ๊ฒ์ผ๋ก์, ํน์ ํ์ด์ง์์ ์จ ์์ฒญ๋ง ๋ฐ๊ฒ ๋ค! ๋ผ๊ณ ์ ์ธํ๋ ๊ฒ์ด๋ค.
ํด๋น ๋์์ ๋ํ ์ฐํ ๋ฐฉ๋ฒ์? ์๋ค!
Referer๋ฅผ ์ .๋.๋ก ์ฒดํฌํ์ ๋ ์ฐํ๊ฐ ๋ถ๊ฐ๋ฅ ํ๋ค๋ ๊ฒ์ด๋ค.
ํ์ง๋ง referer๋ฅผ ์ ๋๋ก ์ฒดํฌํ๋ ๊ฒ์ ์ฝ์ง๊ฐ ์๋ค.
์๋ชป๋ ์์ธ ์ฒ๋ฆฌ
๋ง์ฝ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด? ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐ์ ๋ํ์ฌ ์๊ฐํด ๋ณด์์ผํ๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ try catch๋ฅผ ์ด์ฉํ์ฌ ์๋ฌ๊ฐ ๋ฐ์ ํ์๋ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๊ฒ ๋๋ค.
์ฒ๋ฆฌ ๋ฐฉ๋ฒ
์๋น์ค๋ฅผ ์ค๋จํ๋ ๋ฐฉ๋ฒ๊ณผ vs ๋ ๊ฐ์์ฃผ๋ ๋ฐฉ๋ฒ
์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ฉด ๋น์ฐํ ์๋น์ค๋ฅผ ์ค๋จํ๋ ๋ฐฉ๋ฒ์ด ๋ง๋ค๊ณ ์๊ฐํ ์ ์๋ค. (๋ณด์์) ํ์ง๋ง ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์กฑ์กฑ ์๋น์ค๋ฅผ ์ค๋จํ๋ค๋ ๊ฒ์ ๋ฌด๋ฆฌ๊ฐ ์๋ค.
๊ทธ๋ฌ๋ฉด ์ฝ๋๋ฅผ ๊ณ ์น๋ฉด๋๋๊ฒ ์๋๊น? ๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
ํ์ง๋ง ์ฝ๋๋ฅผ ์๋ชป ๋ง์ง๋ฉด ๋ค๋ฅธ ๊ณณ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋ด๊ฐ ์ง๊ธ ์์ฑํ๋ ์ฝ๋๊ฐ ์๋ฒ์ ์ด๋ค ์ํฅ์ ๋ผ์น ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ธ๋ฐ ์ด ์ด์ ๋ ํ ์ฌ๋์ด ๋ชจ๋ ์ฝ๋๋ฅผ ๋ค ์ง๋๊ฒ์ด ์๋๊ณ , ์ฌ๋ฌ ์ฌ๋์ด ์์ ๋ณด์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ํ ์ต์ด ๊ฐ๋ฐ์๊ฐ ๊ณ์ํด์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์๋๊ณ ์ ์ง๋ณด์๋ ๋ฐ๋ก์ด ์งํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์ ๋ถ ํ์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น๊ณ , ์๋ฌ ๋ฐ์ ์ ๋ชจ๋ ๊ฒ์ ๋ง์ ๋ฒ๋ฆฌ๋ฉด ๋ค๋ฅธ ๊ณณ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์๋น์ค๋ฅผ ์ค๋จํ๋ ๊ฒ์ด ์๋๊ณ ๋๊ฐ์ ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ด๋ค.
์์ ๊ฐ์ ์ด์ ๋ฅผ ์๊ฐํ๋ฉฐ ์๋๋ฅผ ์ดํด๋ณด์.
ex) ๋น๋ฐ ๋ฒํธ ๋ณ๊ฒฝ(feat. CSRF Token)
1. ๋น๋ฐ๋ฒํธ๊ฐ ๋ณ๊ฒฝ๋๋ ๋ง์ดํ์ด์ง์๋ง CSRF ํ ํฐ์ ๋ง๋ค์ด์ฃผ์๋ค.
2. ๊ทธ๋ฐ๋ฐ ์๊ณ ๋ณด๋ ๊ฐ์ธ ์ํฌ๋ฆฟ ํ์ด์ง์์๋ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ด ์ง์๋๊ณ ์์๋ค.
(๋น๋ฐ ๋ฒํธ ๋ณ๊ฒฝ ์์ฒญ์ด CSRF Token ์ค์ ์ ํ ํ์ด์ง ์ด์ธ์์๋ ๊ฐ๋ฅํ๋ ๊ฒฝ์ฐ)
change_pass.php ๋ผ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ CSRF Token์ ๊ฒ์ฌํ๋ค๋ฉด?
CSRF Token์ ์ค์ ํด๋ ํ์ด์ง์์๋ ๋ณ๊ฒฝ ์์ฒญ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ธฐ์กด์ ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ด ์ง์๋์๋ ๊ณณ์ธ๋ฐ ๋ฏธ์ฒ ํ์ธํ์ง ๋ชปํ๊ณ CSRF Token์ด ๋๋ฝ๋ ๊ณณ์ด ์๋ค๋ฉด? ํด๋น ํ์ด์ง์์ ๋ณด๋ด๋ ๋ณ๊ฒฝ ์์ฒญ์ ๋ถ๊ฐ๋ฅํด์ง๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด '๋๊ฐ์ ์ฃผ๊ธฐ'๋ฅผ ์ ํํ๋ค๋ ๊ฒ์ด๋ค.
Bypass CSRF Token (feat. ๋๊ฐ์์ฃผ๊ธฐ)
csrf_token ํ๋ผ๋ฏธํฐ๊ฐ ์์ผ๋ฉด? csrf ํ ํฐ์ ๊ฒ์ฌํ์ง ์๋๋ค. ๋ผ๋ ๋ฐฉ์์ ์ทจํ๋ ๊ฒฝ์ฐ๋ ํ๋คํ๋ค๋ ๊ฒ์ด๋ค.
์ฆ ํ์ ํ์ง ๋ชปํ ๋ค๋ฅธ ์์ฒญ์ ์ํฅ์ ์ค๊น๋ด , ๋นก์ธ๊ฒ ์ก์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ csrf token์ด ์กด์ฌํ๋๋ผ๋ ํด๋น ํ๋ผ๋ฏธํฐ๋ฅผ ๋นผ๊ณ ์์ฒญ์ ํด๋ณด๋ฉด๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ ์ฌ์ค์ ์ธ์งํ์!
Referer ๋ํ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
CSRF ๊ณต๊ฒฉ (Bypass Referer, feat ๋๊ฐ์์ฃผ๊ธฐ)
๊ทธ๋์ referer๋ฅผ ์์ ๊ณ ๋ณด๋ด๋ ๊ฒฝ์ฐ์ ๋ ์ ์๋ค๋ ๊ฒ์ ์ธ์งํ์.
<meta name="referrer" content="no-referrer">
์์ ๋ฉํ ํ๊ทธ๋ฅผ ์ด์ฉํ๋ฉด referer๋ฅผ ์ง์ฐ๊ณ ๋ณด๋ผ ์ ์๊ณ , ์ด ๋ฐฉ์์ผ๋ก ์ฐํ๊ฐ ๋ ์ ์๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฐํ๊ฐ ๋์ง ์๋๋ค๋ฉด referer๊ฐ ์ ๋๋ก ๊ตฌํ๋์ด ์๋ค๋ ๊ฒ์ด๊ณ , ๊ทธ๋ ๋ค๋ฉด ์ฐํ๋์ง ์๋ ๊ฒ์ด๋ค.
๊ทผ๋ณธ์ ์ธ ๋์ ๋ฐฉ๋ฒ
'Referer Check' ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ referer ์ฒดํฌ๋ฅผ ์ .๋.๋ก ํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง CSRF ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ ๊ทผ๋ณธ์ ์ธ ์์ธ์ ์๊ฐํด๋ณด๋ฉด ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฏธ๋ฆฌ ์ธํ ํ ์ ์์ด์ ๋ฐ์ํ๋ ๊ฒ์ธ๋งํผ ๋ฏธ๋ฆฌ ์ธํ ํ ์ ์๊ฒ๋ง ๋ง๋ค๋ฉด๋๋ค.
์ฆ ์ธ์ฆ์ ๋ณด๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค๋ ๊ฒ์ด๋ค.
์ธ์ฆ ์ ๋ณด ์ถ๊ฐ
ํ์ง๋ง ๋ชจ๋ ๊ณณ์์ ์ธ์ฆ์ ์ถ๊ฐ์ ์ผ๋ก ์งํํ๋ค๋ฉด? ์ด๋ ๊ท์ฐฎ์์ ๋์ด์์ ์ด์ฉ์์ ์ง์ฆ์ ์ ๋ฐํ ์ ์๋ค๋ ์ฌ์ค์ ์ธ์งํด์ผ ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ฐ๋ฐ์์ ์ ์ฅ์์ ํ๋จ ํ์ ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์๋ง ๋ฃ์ด์ผํ๋ค.
๋ณธ์ธ ์ธ์ฆ / ํด๋ํฐ ์ธ์ฆ / 2์ฐจ์ธ์ฆ / ๋น๋ฐ๋ฒํธ ์ธ์ฆ
ex) ๊ฐ์ธ์ ๋ณด ๋ณ๊ฒฝ ํ์ด์ง
๊ธฐ์กด ๋น๋ฐ๋ฒํธ๋ฅผ ํจ๊ผ ์ ๋ ฅ๋ฐ๋ ๋ฐฉ์์ ์ทจํจ์ผ๋ก์ ๊ธฐ์กด ๋น๋ฐ๋ฒํธ๋ ๋ฏธ๋ฆฌ ์ธํ ํ ์ ์๋ ๊ฐ์ด๋ฏ๋ก ๋์์ฑ ์ด ๋ ์ ์๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์