mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 11:03:24 +00:00
113 lines
8.2 KiB
Markdown
113 lines
8.2 KiB
Markdown
# DOM Invader
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs exclusivos**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## DOM Invader
|
|
|
|
DOM Invader é uma ferramenta de navegador instalada no navegador integrado do Burp. Ela auxilia na **detecção de vulnerabilidades DOM XSS** usando várias fontes e sumidouros, incluindo mensagens web e poluição de protótipo. A ferramenta já vem pré-instalada como uma extensão.
|
|
|
|
DOM Invader integra uma aba dentro do painel DevTools do navegador, possibilitando o seguinte:
|
|
|
|
1. **Identificação de sumidouros controláveis** em uma página web para testes de DOM XSS, fornecendo contexto e detalhes de sanitização.
|
|
2. **Registro, edição e reenvio de mensagens web** enviadas pelo método `postMessage()` para testes de DOM XSS. DOM Invader também pode detectar vulnerabilidades automaticamente usando mensagens web especialmente criadas.
|
|
3. Detecção de fontes de **poluição de protótipo do lado do cliente** e varredura de gadgets controláveis enviados a sumidouros arriscados.
|
|
4. Identificação de vulnerabilidades de **DOM clobbering**.
|
|
|
|
### Ative-o
|
|
|
|
No navegador integrado do Burp, vá até a **extensão Burp** e ative-a:
|
|
|
|
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Agora atualize a página e, no **Dev Tools**, você encontrará a aba **DOM Invader**:
|
|
|
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
### Injete um Canary
|
|
|
|
Na imagem anterior, você pode ver um **grupo aleatório de caracteres, que é o Canary**. Agora você deve começar a **injetá-lo** em diferentes partes da web (parâmetros, formulários, URL...) e cada vez clicar para pesquisá-lo. DOM Invader verificará se o **canary terminou em algum sumidouro interessante** que poderia ser explorado.
|
|
|
|
Além disso, as opções **Inject URL params** e Inject forms abrirão automaticamente uma **nova aba** **injetando** o **canary** em cada parâmetro de **URL** e **formulário** encontrado.
|
|
|
|
### Injete um Canary vazio
|
|
|
|
Se você apenas quer encontrar potenciais sumidouros que a página possa ter, mesmo que não sejam exploráveis, você pode **procurar por um canary vazio**.
|
|
|
|
### Mensagens Post
|
|
|
|
DOM Invader permite testar para DOM XSS usando mensagens web com recursos como:
|
|
|
|
1. **Registro de mensagens web** enviadas via `postMessage()`, semelhante ao registro de histórico de requisições/respostas HTTP do Burp Proxy.
|
|
2. **Modificação** e **reemissão** de mensagens web para testar manualmente para DOM XSS, similar à função do Burp Repeater.
|
|
3. **Alteração automática** e envio de mensagens web para sondagem de DOM XSS.
|
|
|
|
#### Detalhes da mensagem
|
|
|
|
Você pode clicar em cada mensagem para ver mais informações detalhadas sobre ela, incluindo se as propriedades `origin`, `data` ou `source` da mensagem são acessadas pelo JavaScript do lado do cliente.
|
|
|
|
* **`origin`**: Se a **informação de origem da mensagem não for verificada**, você pode ser capaz de enviar mensagens cross-origin para o manipulador de eventos **de um domínio externo arbitrário**. Mas se for verificada, ainda pode ser insegura.
|
|
* **`data`**: Aqui é onde o payload é enviado. Se esses dados não forem usados, o sumidouro é inútil.
|
|
* **`source`**: Avalia se a propriedade source, geralmente referenciando um iframe, é validada em vez da origem. Mesmo que isso seja verificado, não garante que a validação não possa ser contornada.
|
|
|
|
#### Responder a uma mensagem
|
|
|
|
1. Na visualização **Messages**, clique em qualquer mensagem para abrir o diálogo de detalhes da mensagem.
|
|
2. Edite o campo **Data** conforme necessário.
|
|
3. Clique em **Send**.
|
|
|
|
### Poluição de Protótipo
|
|
|
|
DOM Invader também pode procurar por vulnerabilidades de **Poluição de Protótipo**. Primeiro, você precisa ativá-la:
|
|
|
|
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Então, ele irá **procurar por fontes** que permitam adicionar propriedades arbitrárias ao **`Object.prototype`**.
|
|
|
|
Se algo for encontrado, um botão **Test** aparecerá para **testar a fonte encontrada**. Clique nele, uma nova aba aparecerá, crie um objeto no console e verifique se a `testproperty` existe:
|
|
```javascript
|
|
let b = {}
|
|
b.testproperty
|
|
```
|
|
Uma vez que você encontrou uma fonte, você pode **procurar por um gadget**:
|
|
|
|
1. Na visualização **DOM**, clique no botão **Scan for gadgets** ao lado de qualquer fonte de poluição de protótipo que o DOM Invader encontrou. O DOM Invader abre uma nova aba e começa a procurar por gadgets adequados.
|
|
2. Na mesma aba, abra a aba **DOM Invader** no painel DevTools. Uma vez que a varredura esteja concluída, a visualização **DOM** exibe quaisquer sinks que o DOM Invader conseguiu acessar através dos gadgets identificados. No exemplo abaixo, uma propriedade de gadget chamada `html` foi passada para o sink `innerHTML`.
|
|
|
|
## DOM clobbering
|
|
|
|
Na imagem anterior é possível ver que a varredura de DOM clobbering pode ser ativada. Uma vez feito, **o DOM Invader começará a procurar por vulnerabilidades de DOM clobbering**.
|
|
|
|
## Referências
|
|
|
|
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader)
|
|
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling)
|
|
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss)
|
|
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages)
|
|
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution)
|
|
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|