๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ•ธ๏ธ ์›น ํ•ดํ‚น7

[wargame] ๋“œ๋ฆผํ•ต xss-2 ๋ฌธ์ œํ’€์ด ๊ฒ‰๋ณด๊ธฐ์—” xss-1 ์˜ˆ์ œ์™€ ๋น„์Šทํ•˜๋‹ค. xss-1 ์˜ˆ์ œ์—์„œ๋Š” memo ํŽ˜์ด์ง€ ์—”๋“œํฌ์ธํŠธ์— document.cookie๋กœ ์ฟ ํ‚ค๋ฅผ ํƒˆ์ทจํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ณด๋‚ด์ฃผ์—ˆ๋‹ค. ์ด๋ฒˆ์—๋„ ๋˜‘๊ฐ™์ด ํ•ด์ฃผ์—ˆ์ง€๋งŒ...FLAG๊ฐ€ ์–ป์–ด์ง€์ง€ ์•Š๋Š”๋‹ค...(OMG๐Ÿฅน) ๊ฑฐ์ €๋จน๊ธฐ ์‹คํŒจํ–ˆ์œผ๋‹ˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž ํŒŒ์ผ์„ ๋‹ค์šด ๋ฐ›์•„ app.py๋ฅผ ์—ด์–ด์ฃผ๋ฉด vuln ํŽ˜์ด์ง€์™€ memo ํŽ˜์ด์ง€ ๋ชจ๋‘ render_template์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.@app.route("/")def index(): return render_template("index.html")@app.route("/vuln")def vuln(): return render_template("vuln.html") render_template ํ•จ์ˆ˜๋ž€?Flask ์›น.. 2025. 3. 6.
[wargame] ๋“œ๋ฆผํ•ต xss-1 ๋ฌธ์ œํ’€์ด ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ level1 xss-1 ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ’€์ด์ด๋‹ค. ๋ฌธ์ œ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๊ณ  app.py ํŒŒ์ผ์„ ์—ด์–ด์ฃผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŽ˜์ด์ง€๋“ค์ด ๋ผ์šฐํŒ… ๋˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.  ๊ฐ ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ์„ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๐Ÿค” ์ฝ”๋“œ ๋ถ„์„๊ฐ ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ์„ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.  (๋“œ๋ฆผํ•ต ์›น ํ•ดํ‚น ๊ฐ•์ขŒ์—์„œ ์ด๋ฏธ ์ •๋ฆฌ๋œ ๋‚ด์šฉ์ด๋‹ค.)ํŽ˜์ด์ง€๊ธฐ๋Šฅ/์ธ๋ฑ์Šค ํŽ˜์ด์ง€/vuln์ด์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’ ์ถœ๋ ฅ/memo๋ฉ”๋ชจ ์ž‘์„ฑ ๋ฐ ์ž‘์„ฑํ•œ ๋ฉ”๋ชจ ์ถœ๋ ฅ/flag์ž‘์„ฑํ•œ URL ์ „๋‹ฌ  ์ด์ œ ์ฝ”๋“œ์—์„œ ํ•ต์‹ฌ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด์ž.@app.route("/vuln")def vuln(): param = request.args.get("param", "") return paramrequest.args.get("param", "")๋Š” HTTP ์š”์ฒญ์—.. 2025. 3. 6.
Cross-Site Scripting (XSS) ๊ฐœ๋… ์ •๋ฆฌ Cross-Site Scripting (XSS)XSS ๊ณต๊ฒฉ์€ ์ด์šฉ์ž๊ฐ€ ์‚ฝ์ž…ํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.Stored XSSXSS์— ์‚ฌ์šฉ๋˜๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ €์žฅ๋˜๊ณ  ์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋‹ด๊ฒจ์˜ค๋Š” XSSReflected XSSXSS์— ์‚ฌ์šฉ๋˜๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ URL์— ์‚ฝ์ž…๋˜๊ณ  ์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋‹ด๊ฒจ์˜ค๋Š” XSSDOM-based XSSXSS์— ์‚ฌ์šฉ๋˜๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ URL Fragment์— ์‚ฝ์ž…๋˜๋Š” XSSFragment๋Š” ์„œ๋ฒ„ ์š”์ฒญ/์‘๋‹ต ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.Universal XSSํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ € ํ˜น์€ ๋ธŒ๋ผ์šฐ์ €์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ ์œผ๋กœ SOP ์ •์ฑ…์„ ์šฐํšŒํ•˜๋Š” XSS ์•„๋ž˜๋Š” ๋“œ๋ฆผํ•ต ClientSide: XSS ๋‚ด์šฉ ์ค‘์—์„œ ์˜ˆ์‹œ๋กœ ๋‚˜์˜จ ์„ธ ๊ฐ€์ง€ ์ฝ”๋“œ์ธ๋ฐ ๋ชฐ๋ž๋˜ ๋‚ด์šฉ์„ ์•„๋ž˜์— ๊ฐ„๋žตํžˆ ๋ฉ”๋ชจํ•ด๋’€๋‹ค... 2025. 3. 5.
์›น ๋ธŒ๋ผ์šฐ์ € ๋ณด์•ˆ ์ •์ฑ… SOP, CORS, JSONP ๊ฐœ๋… ์ •๋ฆฌ ๐Ÿ›ก๏ธ Same Origin Policy (SOP)๋ž€?SOP(๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ์ ์šฉํ•˜๋Š” ์ •์ฑ…์œผ๋กœ, ๋‹ค๋ฅธ ์ถœ์ฒ˜(Origin)์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ˜„์žฌ ์›น ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ”น Origin(์ถœ์ฒ˜) ์ •์˜Origin์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ์™„์ „ํžˆ ์ผ์น˜ํ•ด์•ผ ๋™์ผํ•œ ์ถœ์ฒ˜๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.์š”์†Œ ์˜ˆ์‹œํ”„๋กœํ† ์ฝœ (Protocol / Scheme)http:// vs. https://ํ˜ธ์ŠคํŠธ (Host / Domain)example.com vs. api.example.comํฌํŠธ (Port)http://example.com:80 vs. http://example.com:8080 โœ… ๊ฐ™์€ Origin์˜ ์˜ˆ์‹œhttps://www.example.com:443h.. 2025. 3. 5.