DOM Invader

Support HackTricks

DOM Invader

DOM Invader는 Burp의 내장 브라우저에 설치된 브라우저 도구입니다. 이 도구는 웹 메시지 및 프로토타입 오염을 포함한 다양한 소스와 싱크를 사용하여 DOM XSS 취약점탐지하는 데 도움을 줍니다. 이 도구는 확장 프로그램으로 사전 설치되어 있습니다.

DOM Invader는 브라우저의 DevTools 패널 내에 탭을 통합하여 다음을 가능하게 합니다:

  1. DOM XSS 테스트를 위한 웹페이지에서 제어 가능한 싱크 식별, 컨텍스트 및 정화 세부정보 제공.

  2. postMessage() 메서드를 통해 전송된 웹 메시지의 로깅, 편집 및 재전송을 위한 DOM XSS 테스트. DOM Invader는 특별히 제작된 웹 메시지를 사용하여 취약점을 자동으로 탐지할 수도 있습니다.

  3. 클라이언트 측 프로토타입 오염 소스 탐지 및 위험한 싱크로 전송된 제어 가능한 가젯 스캔.

  4. DOM 클로버링 취약점 식별.

Enable It

Burp의 내장 브라우저에서 Burp 확장으로 이동하여 활성화합니다:

이제 페이지를 새로 고치고 Dev Tools에서 DOM Invader 탭을 찾을 수 있습니다:

Inject a Canary

이전 이미지에서 무작위 문자 그룹, 즉 Canary를 볼 수 있습니다. 이제 웹의 다양한 부분(매개변수, 양식, URL 등)에 주입하기 시작하고 매번 검색을 클릭하세요. DOM Invader는 canary가 어떤 흥미로운 싱크에 도달했는지 확인합니다.

또한, Inject URL params 및 Inject forms 옵션은 새 탭을 자동으로 열어 canary를 찾은 모든 URL 매개변수와 양식주입합니다.

Inject an empty Canary

페이지에 잠재적인 싱크가 있는지 찾고 싶지만, 그것이 악용 가능하지 않더라도, 빈 canary를 검색할 수 있습니다.

Post Messages

DOM Invader는 다음과 같은 기능을 갖춘 웹 메시지를 사용하여 DOM XSS를 테스트할 수 있습니다:

  1. postMessage()를 통해 전송된 웹 메시지 로깅, Burp Proxy의 HTTP 요청/응답 기록 로깅과 유사합니다.

  2. 웹 메시지의 수정 및 재발행을 통해 DOM XSS를 수동으로 테스트할 수 있으며, Burp Repeater의 기능과 유사합니다.

  3. 웹 메시지의 자동 변경 및 전송을 통해 DOM XSS를 탐색합니다.

Message details

각 메시지에 대한 자세한 정보는 클릭하여 볼 수 있으며, 여기에는 클라이언트 측 JavaScript가 메시지의 origin, data 또는 source 속성에 접근하는지 여부가 포함됩니다.

  • origin : 메시지의 origin 정보가 확인되지 않으면, 임의의 외부 도메인에서 이벤트 핸들러로 교차 출처 메시지를 보낼 수 있습니다. 그러나 확인되면 여전히 안전하지 않을 수 있습니다.

  • data: 페이로드가 전송되는 곳입니다. 이 데이터가 사용되지 않으면, 싱크는 쓸모가 없습니다.

  • source: 일반적으로 iframe을 참조하는 source 속성이 origin 대신 검증되는지 평가합니다. 이것이 확인되더라도 검증이 우회될 수 없다는 보장은 없습니다.

Reply a message

  1. Messages 보기에서 아무 메시지를 클릭하여 메시지 세부정보 대화 상자를 엽니다.

  2. 필요한 대로 Data 필드를 편집합니다.

  3. Send를 클릭합니다.

Prototype Pollution

DOM Invader는 Prototype Pollution 취약점을 검색할 수도 있습니다. 먼저, 이를 활성화해야 합니다:

그런 다음, **Object.prototype**에 임의의 속성을 추가할 수 있는 소스검색합니다.

무언가가 발견되면 찾은 소스를 테스트하기 위한 Test 버튼이 나타납니다. 클릭하면 새 탭이 열리고, 콘솔에서 객체를 생성하고 testproperty가 존재하는지 확인합니다:

let b = {}
b.testproperty

한 번 소스를 찾으면 가젯 스캔을 할 수 있습니다:

  1. DOM 뷰에서 확인된 프로토타입 오염 소스 옆에 있는 가젯 스캔 버튼을 클릭하면 DOM Invader에 의해 새 탭이 열립니다. 적합한 가젯에 대한 스캔이 시작됩니다.

  2. 한편, 같은 탭에서 DevTools 패널에 DOM Invader 탭이 열려 있어야 합니다. 스캔이 완료되면 확인된 가젯을 통해 접근 가능한 모든 싱크가 DOM 뷰에 표시됩니다. 예를 들어, innerHTML 싱크에 전달되는 html이라는 가젯 속성이 아래 예제에 표시됩니다.

DOM 클로버링

이전 이미지에서 DOM 클로버링 스캔을 켤 수 있는 것을 볼 수 있습니다. 완료되면 DOM Invader는 DOM 클로버링 취약점을 검색하기 시작합니다.

References

Support HackTricks

Last updated