DOM Invader

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

DOM Invader

DOM Invader๋Š” Burp Suite์˜ ๋‚ด์žฅ Chromium ๋ธŒ๋ผ์šฐ์ €์— ์„ค์น˜๋œ ๋ธŒ๋ผ์šฐ์ € ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” DOM XSS ๋ฐ ๊ธฐํƒ€ ํด๋ผ์ด์–ธํŠธ ์ธก ์ทจ์•ฝ์ (ํ”„๋กœํ† ํƒ€์ž… ์˜ค์—ผ, DOM ํด๋กœ๋ฒ„๋ง ๋“ฑ)์„ ์ž๋™์œผ๋กœ JavaScript ์†Œ์Šค ๋ฐ ์‹ฑํฌ๋ฅผ ๊ณ„์ธกํ•˜์—ฌ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์ด ํ™•์žฅ์€ Burp์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ ํ™œ์„ฑํ™”๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

DOM Invader๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ DevTools ํŒจ๋„์— ํƒญ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ œ์–ด ๊ฐ€๋Šฅํ•œ ์‹ฑํฌ๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์ปจํ…์ŠคํŠธ(์†์„ฑ, HTML, URL, JS) ๋ฐ ์ ์šฉ๋œ ์ •ํ™” ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  2. postMessage() ์›น ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ก, ํŽธ์ง‘ ๋ฐ ์žฌ์ „์†กํ•˜๊ฑฐ๋‚˜ ํ™•์žฅ์ด ์ž๋™์œผ๋กœ ๋ณ€ํ˜•ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ ์ธก ํ”„๋กœํ† ํƒ€์ž… ์˜ค์—ผ ์†Œ์Šค๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๊ฐ€์ ฏโ†’์‹ฑํฌ ์ฒด์ธ์„ ์Šค์บ”ํ•˜์—ฌ ์ฆ‰์„์—์„œ PoC๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. DOM ํด๋กœ๋ฒ„๋ง ๋ฒกํ„ฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์“ฐ๋Š” id / name ์ถฉ๋Œ).
  5. ํ’๋ถ€ํ•œ ์„ค์ • UI๋ฅผ ํ†ตํ•ด ๋™์ž‘์„ ๋ฏธ์„ธ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์ •์˜ ์นด๋‚˜๋ฆฌ, ์ž๋™ ์ฃผ์ž…, ๋ฆฌ๋””๋ ‰์…˜ ์ฐจ๋‹จ, ์†Œ์Šค/์‹ฑํฌ ๋ชฉ๋ก ๋“ฑ).

1. ํ™œ์„ฑํ™”ํ•˜๊ธฐ

  1. Proxy โžœ Intercept โžœ Open Browser (Burp์˜ ๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ €)๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. Burp Suite ๋กœ๊ณ (์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ˆจ๊ฒจ์ ธ ์žˆ๋‹ค๋ฉด ๋จผ์ € ํผ์ฆ ์กฐ๊ฐ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. DOM Invader ํƒญ์—์„œ Enable DOM Invader๋ฅผ ์ผœ๊ณ  Reload๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  4. DevTools๋ฅผ ์—ด๊ณ (F12 / ์˜ค๋ฅธ์ชฝ ํด๋ฆญ โžœ ๊ฒ€์‚ฌ) ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด DOM Invader ํŒจ๋„์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Burp๋Š” ํ”„๋กœํ•„๋ณ„๋กœ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์‹œ *Settings โžœ Tools โžœ Burpโ€™s browser โžœ Store settingsโ€ฆ*์—์„œ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์นด๋‚˜๋ฆฌ ์ฃผ์ž…ํ•˜๊ธฐ

์นด๋‚˜๋ฆฌ๋Š” DOM Invader๊ฐ€ ์ถ”์ ํ•˜๋Š” ์ž„์˜์˜ ๋งˆ์ปค ๋ฌธ์ž์—ด(์˜ˆ: xh9XKYlV)์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋ณต์‚ฌํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜, ์–‘์‹, ์›น ์†Œ์ผ“ ํ”„๋ ˆ์ž„, ์›น ๋ฉ”์‹œ์ง€ ๋“ฑ์— ์ˆ˜๋™์œผ๋กœ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • Inject URL params / Inject forms ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์นด๋‚˜๋ฆฌ๊ฐ€ ๋ชจ๋“  ์ฟผ๋ฆฌ ํ‚ค/๊ฐ’ ๋˜๋Š” ์–‘์‹ ํ•„๋“œ์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ƒˆ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.
  • ๋นˆ ์นด๋‚˜๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ชจ๋“  ์‹ฑํฌ๋ฅผ ๋…ธ์ถœ์‹œํ‚ต๋‹ˆ๋‹ค(์ •์ฐฐ์— ์œ ์šฉ).

์‚ฌ์šฉ์ž ์ •์˜ ์นด๋‚˜๋ฆฌ (2025+)

Burp 2024.12๋Š” ์นด๋‚˜๋ฆฌ ์„ค์ •์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค(Burp ๋กœ๊ณ  โžœ DOM Invader โžœ ์นด๋‚˜๋ฆฌ). ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋ฌด์ž‘์œ„ํ™”ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฌธ์ž์—ด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(๋‹ค์ค‘ ํƒญ ํ…Œ์ŠคํŠธ์— ์œ ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์ด ํŽ˜์ด์ง€์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‚˜ํƒ€๋‚  ๋•Œ).
  • ๊ฐ’์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Reload๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

3. ์›น ๋ฉ”์‹œ์ง€ (postMessage)

Messages ํ•˜์œ„ ํƒญ์€ ๋ชจ๋“  window.postMessage() ํ˜ธ์ถœ์„ ๊ธฐ๋กํ•˜๋ฉฐ origin, source, data ์‚ฌ์šฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

โ€ข ์ˆ˜์ • ๋ฐ ์žฌ์ „์†ก: ๋ฉ”์‹œ์ง€๋ฅผ ๋”๋ธ” ํด๋ฆญํ•˜๊ณ  data๋ฅผ ํŽธ์ง‘ํ•œ ํ›„ Send๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค(Burp Repeater์™€ ์œ ์‚ฌ).

โ€ข ์ž๋™ ํผ์ง•: ์„ค์ •์—์„œ Postmessage interception โžœ Auto-mutate๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ DOM Invader๊ฐ€ ์นด๋‚˜๋ฆฌ ๊ธฐ๋ฐ˜ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ธ๋“ค๋Ÿฌ์— ์žฌ์ƒํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ ์˜๋ฏธ ์š”์•ฝ:

  • origin โ€“ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ event.origin์„ ๊ฒ€์ฆํ•˜๋Š”์ง€ ์—ฌ๋ถ€.
  • data โ€“ ํŽ˜์ด๋กœ๋“œ ์œ„์น˜. ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ์‹ฑํฌ๋Š” ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค.
  • source โ€“ iframe / window ์ฐธ์กฐ ๊ฒ€์ฆ; ์ข…์ข… ์—„๊ฒฉํ•œ ์ถœ์ฒ˜ ํ™•์ธ๋ณด๋‹ค ์•ฝํ•ฉ๋‹ˆ๋‹ค.

4. ํ”„๋กœํ† ํƒ€์ž… ์˜ค์—ผ

Settings โžœ Attack types โžœ Prototype pollution์—์„œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ํ๋ฆ„:

  1. ํƒ์ƒ‰ โ€“ DOM Invader๋Š” URL/์ฟผ๋ฆฌ/ํ•ด์‹œ ๋˜๋Š” JSON ์›น ๋ฉ”์‹œ์ง€์—์„œ ๋ฐœ๊ฒฌ๋œ ์˜ค์—ผ ์†Œ์Šค(__proto__, constructor, prototype)๋ฅผ ํ”Œ๋ž˜๊ทธํ•ฉ๋‹ˆ๋‹ค.
  2. ํ…Œ์ŠคํŠธ โ€“ Test๋ฅผ ํด๋ฆญํ•˜์—ฌ Object.prototype.testproperty๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” PoC ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค:
let obj = {};
console.log(obj.testproperty); // โžœ 'DOM_INVADER_PP_POC'
  1. ๊ฐ€์ ฏ ์Šค์บ” โ€“ DOM Invader๋Š” ์†์„ฑ ์ด๋ฆ„์„ ๋ฌด์ž‘์œ„๋กœ ์‹œ๋„ํ•˜๊ณ  ์–ด๋–ค ๊ฒƒ์ด ์œ„ํ—˜ํ•œ ์‹ฑํฌ์— ๋„๋‹ฌํ•˜๋Š”์ง€ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: innerHTML).
  2. ์ต์Šคํ”Œ๋กœ์ž‡ โ€“ ๊ฐ€์ ฏ-์‹ฑํฌ ์ฒด์ธ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด Exploit ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚˜ ์†Œ์Šค + ๊ฐ€์ ฏ + ์‹ฑํฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๊ธ‰ ์„ค์ •(ํ†ฑ๋‹ˆ๋ฐ”ํ€ด ์•„์ด์ฝ˜):

  • CSP / X-Frame-Options ์ œ๊ฑฐํ•˜์—ฌ ๊ฐ€์ ฏ ์Šค์บ” ์ค‘ iframe์ด ์ž‘๋™ ๊ฐ€๋Šฅํ•˜๋„๋ก ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ„๋„์˜ ํ”„๋ ˆ์ž„์—์„œ ์Šค์บ” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ __proto__์™€ constructor ๊ฐ„์„ญ์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์ˆ ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ทจ์•ฝํ•œ ์•ฑ์— ๋งž์ถฅ๋‹ˆ๋‹ค.

5. DOM ํด๋กœ๋ฒ„๋ง

Attack types โžœ DOM clobbering์„ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. DOM Invader๋Š” id/name ์†์„ฑ์ด ์ „์—ญ ๋ณ€์ˆ˜ ๋˜๋Š” ์–‘์‹ ๊ฐ์ฒด์™€ ์ถฉ๋Œํ•˜๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์š”์†Œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค(<input name="location"> โ†’ window.location์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค). ์‚ฌ์šฉ์ž ์ œ์–ด ๋งˆํฌ์—…์ด ๋ณ€์ˆ˜ ๊ต์ฒด๋กœ ์ด์–ด์งˆ ๋•Œ๋งˆ๋‹ค ํ•ญ๋ชฉ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


6. ์„ค์ • ๊ฐœ์š” (2025)

DOM Invader๋Š” ์ด์ œ Main / Attack Types / Misc / Canary ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋‚˜๋‰˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Main
  • Enable DOM Invader โ€“ ์ „์—ญ ์Šค์œ„์น˜.
  • Postmessage interception โ€“ ๋ฉ”์‹œ์ง€ ๋กœ๊น…์„ ์ผœ๊ฑฐ๋‚˜ ๋•๋‹ˆ๋‹ค; ์ž๋™ ๋ณ€ํ˜•์„ ์œ„ํ•œ ํ•˜์œ„ ํ† ๊ธ€.
  • Custom Sources/Sinks โ€“ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด ์•„์ด์ฝ˜ โžœ ํŠน์ • ์‹ฑํฌ(์˜ˆ: eval, setAttribute)๋ฅผ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์•ฑ์ด ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  1. Attack Types
  • Prototype pollution (๊ธฐ์ˆ ๋ณ„ ์„ค์ • ํฌํ•จ).
  • DOM clobbering.
  1. Misc
  • Redirect prevention โ€“ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฆฌ๋””๋ ‰์…˜์„ ์ฐจ๋‹จํ•˜์—ฌ ์‹ฑํฌ ๋ชฉ๋ก์ด ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • Redirect ์ „์— ์ค‘๋‹จ์  โ€“ ๋ฆฌ๋””๋ ‰์…˜ ์ง์ „์— JS๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•˜์—ฌ ํ˜ธ์ถœ ์Šคํƒ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์†Œ์Šค์— ์นด๋‚˜๋ฆฌ ์ฃผ์ž… โ€“ ์นด๋‚˜๋ฆฌ๋ฅผ ๋ชจ๋“  ๊ณณ์— ์ž๋™ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค; ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์†Œ์Šค/๋งค๊ฐœ๋ณ€์ˆ˜ ํ—ˆ์šฉ ๋ชฉ๋ก.
  1. Canary
  • ์นด๋‚˜๋ฆฌ ๋ณด๊ธฐ / ๋ฌด์ž‘์œ„ํ™” / ์‚ฌ์šฉ์ž ์ •์˜ ์นด๋‚˜๋ฆฌ ์„ค์ •; ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

7. ํŒ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

  • ๊ตฌ๋ณ„๋˜๋Š” ์นด๋‚˜๋ฆฌ ์‚ฌ์šฉ โ€“ test์™€ ๊ฐ™์€ ์ผ๋ฐ˜ ๋ฌธ์ž์—ด์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ž˜๋ชป๋œ ๊ธ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌด๊ฑฐ์šด ์‹ฑํฌ(eval, innerHTML)๋Š” ํƒ์ƒ‰ ์ค‘ ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ์ด ์ค‘๋‹จ๋˜๋ฉด ์ผ์‹œ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Burp Repeater ๋ฐ Proxy์™€ ๊ฒฐํ•ฉ โ€“ ์ทจ์•ฝํ•œ ์ƒํƒœ๋ฅผ ์ƒ์„ฑํ•œ ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ/์‘๋‹ต์„ ๋ณต์ œํ•˜๊ณ  ์ตœ์ข… ์ต์Šคํ”Œ๋กœ์ž‡ URL์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„ ๋ฒ”์œ„ ๊ธฐ์–ต โ€“ ์†Œ์Šค/์‹ฑํฌ๋Š” ๋ธŒ๋ผ์šฐ์ง• ์ปจํ…์ŠคํŠธ๋ณ„๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค; iframe ๋‚ด๋ถ€์˜ ์ทจ์•ฝ์ ์€ ์ˆ˜๋™์œผ๋กœ ์ง‘์ค‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฆ๊ฑฐ ๋‚ด๋ณด๋‚ด๊ธฐ โ€“ DOM Invader ํŒจ๋„์—์„œ ์˜ค๋ฅธ์ชฝ ํด๋ฆญ โžœ Save screenshot์„ ํด๋ฆญํ•˜์—ฌ ๋ณด๊ณ ์„œ์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

References

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ