Iframe Traps

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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

์ด๋ ‡๊ฒŒ iframes๋ฅผ ํ†ตํ•ด XSS๋ฅผ ์•…์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํ›”์น˜๋Š” ๋ฐฉ์‹์€ ์›๋ž˜ trustedsec.com์˜ ๋‹ค์Œ ๋‘ ํฌ์ŠคํŠธ์— ์ฒ˜์Œ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค: here and here.

๊ณต๊ฒฉ์€ XSS์— ์ทจ์•ฝํ•œ ํŽ˜์ด์ง€์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ์ „์ฒด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฐจ์ง€ํ•˜๋Š” iframe ๋‚ด์—์„œ ์ด๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด victims donโ€™t leave the XSS ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XSS ๊ณต๊ฒฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ํ™”๋ฉด์˜ 100%๋ฅผ ์ฐจ์ง€ํ•˜๋Š” iframe์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”ผํ•ด์ž๋Š” wonโ€™t notice he is inside an iframe. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”ผํ•ด์ž๊ฐ€ iframe(์›น ๋‚ด๋ถ€) ์•ˆ์˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๋ฉด, ๋กœ๋“œ๋œ ์ž„์˜์˜ JS๊ฐ€ ์ด ์ด๋™์—์„œ ์ •๋ณด๋ฅผ ํ›”์น˜๋ฉด์„œ ๊ทธ๋Š” navigating inside the iframe ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋” ํ˜„์‹ค๊ฐ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, iframe์ด ํŽ˜์ด์ง€์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋ฅผ ํ™•์ธํ•˜๋Š” ์ผ๋ถ€ listeners๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์˜ URL์„ ํ•ด๋‹น ์œ„์น˜๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png

https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png

๋˜ํ•œ listeners๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”ผํ•ด์ž๊ฐ€ ๋ฐฉ๋ฌธํ•˜๋Š” ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, filled forms์— ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ(์ž๊ฒฉ์ฆ๋ช… ๋“ฑ)๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ steal the local storageํ•˜๋Š” ๋“ฑ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ฃผ์š” ์ œํ•œ์ ์€ ํ”ผํ•ด์ž๊ฐ€ ํƒญ์„ ๋‹ซ๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €์— ๋‹ค๋ฅธ URL์„ ์ž…๋ ฅํ•˜๋ฉด iframe์—์„œ ๋ฒ—์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋Š” ๊ฒƒ์ด ์žˆ์ง€๋งŒ, ์ด๋Š” iframe ๋‚ด๋ถ€์—์„œ ์ƒˆ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋  ๋•Œ๋งˆ๋‹ค ์šฐํด๋ฆญ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์˜ ๋งˆ์šฐ์Šค๊ฐ€ iframe์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์—ฌ(๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ๋กœ๊ณ ์นจ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ ค๋Š” ๊ฒฝ์šฐ) ๋ธŒ๋ผ์šฐ์ €์˜ URL์„ XSS์— ์ทจ์•ฝํ•œ ์›๋ž˜ URL๋กœ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ•จ์œผ๋กœ์จ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋‹ค์‹œ ๊ฐ์—ผ๋  ์ˆ˜ ์žˆ์ง€๋งŒ(์ด๋Š” ๋งค์šฐ ์€๋ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์ตœ์‹ ํ™”๋œ trap (2024+)

  • ์‹ค์ œ ๋„ค๋น„๊ฒŒ์ด์…˜์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด fullโ€‘viewport iframe๊ณผ History/Navigation API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Full-viewport iframe trap ```html ```
  • Navigation API (navigation.navigate, currententrychange)์€ ์™ธ๋ถ€ URL ํ‘œ์‹œ์ค„์„ ๋™๊ธฐํ™” ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์ง€๋งŒ ์‹ค์ œ URL์ด leaking ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ๋ชปํ•จ.
  • Go fullscreenํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € UI๋ฅผ ์ˆจ๊ธฐ๊ณ  ์ž์ฒด ๊ฐ€์งœ ์ฃผ์†Œ ํ‘œ์‹œ์ค„/padlock์„ ๊ทธ๋ฆฌ์„ธ์š”.

Overlay & skimmer ์‚ฌ์šฉ

  • ์นจํ•ด๋œ ๊ฐ€๋งน์ ์€ Stripe, Adyen ๋“ฑ์œผ๋กœ ํ˜ธ์ŠคํŒ…๋œ ๊ฒฐ์ œ iframe์„ ์‹ค์ œ ํ”„๋ ˆ์ž„์€ ์•„๋ž˜์— ๋‘” ์ฑ„ ํ‚ค ์ž…๋ ฅ์„ ์ „๋‹ฌํ•˜๋Š” pixelโ€‘perfect overlay๋กœ ๊ต์ฒดํ•˜๋ฉฐ, ๋•Œ๋กœ๋Š” ํ๋ฆ„์ด ๊นจ์ง€์ง€ ์•Š๋„๋ก legacy validation APIs๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ƒ์œ„ ํ”„๋ ˆ์ž„์— ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€๋‘๋ฉด URL ํ‘œ์‹œ์ค„์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒƒ์„ ๋ˆˆ์น˜์ฑ„๊ธฐ ์ „์— autofill/passwordโ€‘manager ๋ฐ์ดํ„ฐ๋ฅผ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Evasion tricks observed in 2025 research

  • about:blank/data: ๋กœ์ปฌ ํ”„๋ ˆ์ž„์€ ๋ถ€๋ชจ origin์„ ์ƒ์†ํ•˜์—ฌ ์ผ๋ถ€ contentโ€‘blocker ํœด๋ฆฌ์Šคํ‹ฑ์„ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค; ์ค‘์ฒฉ๋œ iframe์€ ํ™•์žฅํ”„๋กœ๊ทธ๋žจ์ด ์„œ๋“œํŒŒํ‹ฐ ํ”„๋ ˆ์ž„์„ ์ œ๊ฑฐํ•ด๋„ ๋‹ค์‹œ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Permission propagation: ๋ถ€๋ชจ์˜ allow ์†์„ฑ์„ ์žฌ์ž‘์„ฑํ•˜๋ฉด ๋ช…๋ฐฑํ•œ DOM ๋ณ€๊ฒฝ ์—†์ด ์ค‘์ฒฉ๋œ ๊ณต๊ฒฉ์ž ํ”„๋ ˆ์ž„์— fullscreen/camera/microphone ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

Quick OPSEC tips

  • ๋งˆ์šฐ์Šค๊ฐ€ ๋– ๋‚  ๋•Œ(mouseleave on body) iframe์— ๋‹ค์‹œ ํฌ์ปค์Šค๋ฅผ ์ฃผ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ € UI์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์œผ์„ธ์š”.
  • ํ”„๋ ˆ์ž„ ๋‚ด๋ถ€์—์„œ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์™€ ์ผ๋ฐ˜ ๋‹จ์ถ•ํ‚ค(keydown์—์„œ F11, Ctrl+L, Ctrl+T)๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด ํƒˆ์ถœ ์‹œ๋„๋ฅผ ์ง€์—ฐ์‹œํ‚ค์„ธ์š”.
  • CSP๊ฐ€ ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๋ฉด ์›๊ฒฉ bootstrapper๋ฅผ ์ฃผ์ž…ํ•˜๊ณ  iframe์—์„œ srcdoc์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ๊ฐ•์ œ CSP ๋ฐ–์— ์œ„์น˜ํ•˜๋„๋ก ํ•˜์„ธ์š”.

Clickjacking

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 ์ง€์›ํ•˜๊ธฐ