DOM Invader

Reading time: 6 minutes

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 탭을 엽니다:
javascript
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 지원하기