CSRF๋?
CSRF๋, Cross Site Request Forgery์ ์ฝ์๋ก, ์ฌ์ดํธ๊ฐ ์์ฒญ ์์กฐ๋ฅผ ๋ปํฉ๋๋ค. CSRF๋ ์ฌ์ฉ์๊ฐ ์์ ์ ์์์๋ ๋ฌด๊ดํ๊ฒ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํ์(๋ฐ์ดํฐ ์์ , ์ญ์ , ๋ฑ๋ก ๋ฑ)์ ํน์ ์น์ฌ์ดํธ์ ์์ฒญํ๋ ๊ณต๊ฒฉ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ํผํด์์ ์ ์ ๋ฉ์ผ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๊ธ์ด์ฒด๋ฅผ ํ๋ ๋ฑ์ ๋์์ ์ํํ๊ฒ ํ ์ ์์ต๋๋ค. ๋, ํน์ฑ์ ๋ฐ๋ผ ๊ณต๊ฒฉ์๋ ์ฌ์ฉ์์ ๊ณ์ ์ ๋ํ ์์ ํ ์ ์ด๊ถ์ ์ป์ ์๋ ์์ต๋๋ค.
- ์๋ฒ๋ ๋ก๊ทธ์ธ ์ ์ธ์ฆ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ธ์ (session)์ ์ ์ฅํ๊ณ ์ด์ ๋งค์นญ๋๋ ์ธ์ ์์ด๋(session ID)์ ๋ง๋ ๋ค.
- ์๋ฒ๋ ์ ์ฅ๋ ์ธ์ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ์ธ์ ์์ด๋๋ฅผ Set-Cookie ํค๋์ ๋ด์์ ์ ๋ฌํ๋ค.
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ ์ ๋ฌ๋ ์ธ์ ์์ด๋๋ฅผ ์ฟ ํค์ ์ ์ฅํ๋ค.
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ ํด๋น ๋๋ฉ์ธ์ ๊ฐ์ง ์๋ฒ๋ก ์์ฒญ ์ ์ฟ ํค์ ์ ์ฅ๋ ์ธ์ ์์ด๋๋ฅผ ์๋์ผ๋ก ์ ๋ฌํ๋ค.
- ์๋ฒ๋ ์ฟ ํค์ ๋ด๊ธด ์ธ์ ์์ด๋๋ฅผ ํตํด ์ธ์ฆ๋ ์ฌ์ฉ์์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค.
๋ฌธ์ ํด์
/vuln ํ์ด์ง
xss_filter์ ํฌํจ๋ ๋จ์ด๋ “*”๋ก ๋์ฒด๋๊ณ ์์ด์, <script>alert(1)</script> ๋๋ <svg/onload=alert(1)/> ๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์คํ๋์ง ๋ชปํ๋ค.
@app.route("/vuln")
def vuln():
param = request.args.get("param", "").lower()
xss_filter = ["frame", "script", "on"]
for _ in xss_filter:
param = param.replace(_, "*")
return param
/admin/notice_flag
@app.route("/admin/notice_flag")
def admin_notice_flag():
global memo_text
if request.remote_addr != "127.0.0.1":
return "Access Denied"
if request.args.get("userid", "") != "admin":
return "Access Denied 2"
memo_text += f"[Notice] flag is {FLAG}\\n"
return "Ok"
/admin/notice_flag ๋ฅผ 1. ๋ก์ปฌ ํธ์คํธ ํ๊ฒฝ์์ 2.userid=admin ํ๋ผ๋ฏธํฐ๋ก ์์ฒญ์ ํ๋ฉด memo์ flag ๊ฐ์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ฌธ์ ํ์ด
/flag ํ์ด์ง์์ param ๊ฐ๋ง ์กฐ์ํ ์ ์์ผ๋ฏ๋ก /admin/notice_flag ํ์ด์ง ์ ์์ผ๋ก ์ ๋ํด์ผ ํ๋ค. ๋จ์ ์น ํ์ด์ง์ ์ ์ํ๋ ์ฝ๋๋ง ์คํ์ํค๋ ค๋ฉด img ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. img ํ๊ทธ๋ src ๋งํฌ์ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ ค๋ ์๋๋ฅผ ํ๊ธฐ ๋๋ฌธ์ /admin/notice_flag?userid=admin ํ์ด์ง๋ก ์ ์ํ๊ฒ ๋๋ค.
<img src="/admin/notice_flag?userid=admin">
์ฐธ๊ณ
'๐ดโโ ๏ธ CTF ๐ดโโ ๏ธ > โ๏ธ ์น โ๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dream Hack - Web] sql injection bypass WAF (0) | 2024.08.14 |
---|---|
[Dream Hack - Web] error based sql injection (0) | 2024.08.13 |
[Dream Hack - Web] csrf-2 (0) | 2024.08.07 |
[Dream Hack - Web] xss-2 (0) | 2024.08.02 |
[Dream Hack - Web] xss-1 (0) | 2024.08.02 |