Cross Site Request Forgery(CSRF)
์น ์๋น์ค๋ ์ฟ ํค ๋๋ ์ธ์ ์ ์ฌ์ฉํด ์ด์ฉ์๋ฅผ ์๋ณํฉ๋๋ค.
์์ ์ด์ฉ์์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, ์ด๋ ๊ณง ์์ ์ด์ฉ์์ ๊ถํ์ผ๋ก ์น ์๋น์ค ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ!
CSRF๋ ์์ ์ด์ฉ์์ ๊ถํ์ ์์ ์ฃผ์์ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์๋ ์ทจ์ฝ์ ์
๋๋ค.
๊ณต๊ฒฉ์๋ ์์ ์ด์ฉ์์ ๊ถํ์ผ๋ก ์๋น์ค ๊ธฐ๋ฅ์ ์ฌ์ฉํด ์ด๋์ ์ทจํ๋ ํ์์ด์ฃ
์๋๋ฆฌ์ค๋ฅผ ํ๋ฒ ๋ด
์๋ค ์๋ ์ฝ๋๋ CSRF์ ์ทจ์ฝํ ์ก๊ธ ๊ธฐ๋ฅ ์ํ ์ฝ๋์
๋๋ค. ์๋ํ๋ฉด..
๊ณ์ข ๋น๋ฒ, OTP ๋ฑ์ ์ฌ์ฉํ์ง ์๊ธฐ์ ๋ก๊ทธ์ธํ ์ด์ฉ์๋ ์ถ๊ฐ ์ธ์ฆ ์ ๋ณด์์ด ๊ธฐ๋ฅ์ด ์ฌ์ฉ๋๋๊น์
์ ์ฝ๋์ ๋ํ์ฌ ์ฃผ์๊น๊ฒ ์ดํด๋ณด๋ฉด..
/sendmoney ๋ก ๊ฐ์ user์ ๋ํ์ฌ to๋ฅผ ์
๋ ฅ ๊ทธ๋ฆฌ๊ณ ๊ธ์ก์ ์
๋ ฅํด ์ ์กํ๋ฉด ๋ฐํํด์ฃผ๋ค์
Cross Site Request Forgery ๋์
CSRF ๊ณต๊ฒฉ์ ์ฑ๊ณต์ ์ฑ๊ณตํ๊ธฐ ์ํด์ ๊ณต๊ฒฉ์๊ฐ ์์ฑํ ์
์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉ์๊ฐ ์คํํด์ผ ํ์ฃ
์ฌ๊ธฐ์ ์
์ฑ ์คํฌ๋ฆฝํธ๋ HTTP ์์ฒญ์ ๋ณด๋ด๋ ์ฝ๋๋ก, ์๋ ์์ฒญ์ ๋ณด๋ด๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด๋ณผ๊น์?
CSRF ๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ๋ HTML ๋๋ JS๋ฅผ ํตํด ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ img ํ๊ทธ ์ฌ์ฉ/์น ํ์ด์ง์ ์
๋ ฅ๋ ์์ ์ ์ก form ํ๊ทธ ์ฌ์ฉ ๋ฑ์ด ์์ด์
์ด๋ฌํ ํ๊ทธ๋ฅผ ์ฌ์ฉํด HTTP ์์ฒญ์ ๋ณด๋ด๋ฉด HTTP ํค๋์ธ Cookie์ ์ด์ฉ์์ ์ธ์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
์๋ ์ฝ๋๋ค์ ์์ ์ฝ๋์ ๋๋ค.
HTML img ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๊ณต๊ฒฉ
1 <img src='http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337' width=0px height=0px>cs
JavaScript๋ฅผ ์ฌ์ฉํ ๊ณต๊ฒฉ
12345 /* ์ ์ฐฝ ๋์ฐ๊ธฐ */window.open('http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337');/* ํ์ฌ ์ฐฝ ์ฃผ์ ์ฎ๊ธฐ๊ธฐ */location.href = 'http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337';location.replace('http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337');cs
๊ฐ๋จํ ์ค์ต
Dreamhack์์ ํด์ผํ๋๊ฑฐ๋ผ ๊ฐ๋จํ๊ฒ ์ด๋ฏธ์ง๋ก ๋์ฒํ ๊ป์ ใ
์๋ก ์์ผ๋ก http์ ์ ์ก์ ์์ฒญํ๋ ๊ฑฐ์ฃ ๊ทธ ์ด์ธ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๋๋ฐ..
์ฌ๊ธฐ์ ์ด๋ ๊ฒ ์ ๊ณตํด์ฃผ์๋ค์
๋ชจ๋ CSRF ๊ณต๊ฒฉ์ ํน์ง์ ์ธ๋ถ์ ํต์ ์ฆ, HTTP์ ํต์ ์ ์ํ ์ ๋ณด๋ฅผ ๋ฐ์๋๋ฆฐ๋ค๋ ์
XSS ๊ณต๊ฒฉ๊ณผ๋ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ฃ
XSS์ CSRF ๊ณต๊ฒฉ์ ์ฐจ์ด
๋ ๊ณต๊ฒฉ๊ธฐ๋ฒ ๋ค ์คํฌ๋ฆฝํธ๋ฅผ ์น ํ์ด์ง์ ์์ฑ ๊ณต๊ฒฉํ๋ค๋ ์ ์์ ์ ์ฌํฉ๋๋ค
๊ณตํต์
๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋์์ผ๋ก ํ๋ ๊ณต๊ฒฉ์ด๋ฉฐ,
์ด์ฉ์๊ฐ ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํ์ด์ง์ ์ ์ํ๊ฒ ์ ๋ํด์ผํจ
์ฐจ์ด์
๊ณต๊ฒฉ์ ์์ด ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๋๋ค.
XSS๋ ์ธ์ฆ ์ ๋ณด์ธ ์ธ์
๋ฐ ์ฟ ํค ํ์ทจ ๋ชฉ์ ์ผ๋ก ๊ณต๊ฒฉํ ์ฌ์ดํธ์ ์ค๋ฆฌ์ง์์ ์คํฌ๋ฆฝํธ ์คํ
CSRF๋ ์ด์ฉ์๊ฐ ์์ ํ์ด์ง์ HTTP ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ ๊ณต๊ฒฉ์
๋๋ค.
๋ํ ๊ณต๊ฒฉ์๋ ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํ์ด์ง์ ์ ๊ทผํ ์ด์ฉ์ ๊ถํ์ผ๋ก ์์ ๊ธฐ๋ฅ๋ ์คํ ๊ฐ๋ฅ
๊ณ ๋ก ํต์ฌ ํค์๋๋
Cross Site Request Forgery (CSRF)
์ฌ์ดํธ ๊ฐ ์์ฒญ ์์กฐ์ด๋ฉฐ, ์ด์ฉ์๊ฐ ์์ ์ ์์ง์๋ ๋ฌด๊ดํ๊ฒ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํ์๋ฅผ ํน์ ์น์ฌ์ดํธ์ ์์ฒญํ๊ฒ ๋ง๋๋ ๊ณต๊ฒฉ.
์ฐธ๊ณ ์๋ฃ
ClientSide: CSRF
์ด ์ฝ์ค์์๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๊ณต๊ฒฉ์ธ CSRF์ ๋ํด ์ดํด๋ด ๋๋ค
dreamhack.io
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โWeb_Study > ๐โDreamhack_Hacking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL Injection (0) | 2022.10.20 |
---|---|
ClientSide: XSS (0) | 2022.06.21 |
Mitigation: Same Origin Policy (0) | 2022.06.20 |
http vs https (0) | 2022.05.25 |