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 지원하기