mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-20 18:14:15 +00:00
113 lines
8.3 KiB
Markdown
113 lines
8.3 KiB
Markdown
# Invasor DOM
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](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-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
|
|
## Invasor DOM
|
|
|
|
O Invasor DOM é uma ferramenta do navegador instalada no navegador integrado do Burp. Ele auxilia na **detecção de vulnerabilidades de XSS no DOM** usando várias fontes e sinks, incluindo mensagens da web e poluição de protótipos. A ferramenta é pré-instalada como uma extensão.
|
|
|
|
O Invasor DOM integra uma aba dentro do painel DevTools do navegador, permitindo o seguinte:
|
|
|
|
1. **Identificação de sinks controláveis** em uma página da web para teste de XSS no DOM, fornecendo contexto e detalhes de sanitização.
|
|
2. **Registro, edição e reenvio de mensagens da web** enviadas via método `postMessage()` para teste de XSS no DOM. O Invasor DOM também pode detectar automaticamente vulnerabilidades usando mensagens da web especialmente elaboradas.
|
|
3. Detecção de **fontes de poluição de protótipos do lado do cliente** e verificação de gadgets controláveis enviados para sinks arriscados.
|
|
4. Identificação de **vulnerabilidades de clobbering do DOM**.
|
|
|
|
### Habilitar
|
|
|
|
No navegador integrado do Burp, vá para a **extensão do Burp** e habilite-a:
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1129).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Agora atualize a página e na **Dev Tools** você encontrará a aba **Invasor DOM:**
|
|
|
|
<figure><img src="../../.gitbook/assets/image (695).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
### Injetar 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 em pesquisar. O Invasor DOM verificará se o **canary terminou em algum sink interessante** que poderia ser explorado.
|
|
|
|
Além disso, as opções **Injetar parâmetros de URL** e Injetar formulários abrirão automaticamente uma **nova aba** **injetando** o **canary** em cada **parâmetro de URL** e **formulário** que encontrar.
|
|
|
|
### Injetar um Canary vazio
|
|
|
|
Se você apenas deseja encontrar sinks potenciais que a página possa ter, mesmo que não sejam exploráveis, você pode **procurar por um canary vazio**.
|
|
|
|
### Mensagens da Web
|
|
|
|
O Invasor DOM permite testar o XSS no DOM usando mensagens da web com recursos como:
|
|
|
|
1. **Registro de mensagens da web** enviadas via `postMessage()`, semelhante ao registro de histórico de solicitação/resposta HTTP do Burp Proxy.
|
|
2. **Modificação** e **reenvio** de mensagens da web para testar manualmente o XSS no DOM, semelhante à função do Burp Repeater.
|
|
3. **Alteração automática** e envio de mensagens da web para sondar o XSS no DOM.
|
|
|
|
#### Detalhes da mensagem
|
|
|
|
Informações detalhadas podem ser visualizadas sobre cada mensagem clicando nela, o que inclui se o JavaScript do lado do cliente acessa as propriedades `origin`, `data` ou `source` da mensagem.
|
|
|
|
* **`origin`** : Se a **informação de origem da mensagem não for verificada**, você pode enviar mensagens entre origens para o manipulador de eventos **de um domínio externo arbitrário**. Mas se for verificado, ainda pode ser inseguro.
|
|
* **`data`**: Aqui é onde o payload é enviado. Se esses dados não forem usados, o sink é inútil.
|
|
* **`source`**: Avalia se a propriedade de origem, 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 de **Mensagens**, clique em qualquer mensagem para abrir o diálogo de detalhes da mensagem.
|
|
2. Edite o campo **Data** conforme necessário.
|
|
3. Clique em **Enviar**.
|
|
|
|
### Poluição de Protótipos
|
|
|
|
O Invasor DOM também pode procurar por **vulnerabilidades de Poluição de Protótipos**. Primeiro, você precisa habilitá-lo:
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1026).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Em seguida, ele **procurará por fontes** que permitem adicionar propriedades arbitrárias ao **`Object.prototype`**.
|
|
|
|
Se algo for encontrado, um botão de **Teste** 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 **escanear por um gadget**:
|
|
|
|
1. Uma nova aba é aberta pelo DOM Invader quando o botão **Scan for gadgets**, que pode ser encontrado ao lado de qualquer fonte de poluição de protótipo identificada na visualização **DOM**, é clicado. A varredura por gadgets adequados então começa.
|
|
2. Enquanto isso, na mesma aba, a aba **DOM Invader** deve ser aberta no painel DevTools. Após a conclusão da varredura, quaisquer sinks acessíveis através dos gadgets identificados são exibidos na visualização **DOM**. Por exemplo, uma propriedade de gadget chamada `html` sendo passada para o sink `innerHTML` é mostrada no exemplo abaixo.
|
|
|
|
## DOM clobbering
|
|
|
|
Na imagem anterior é possível ver que a varredura de DOM clobbering pode ser ativada. Uma vez feito isso, 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 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 maneiras de apoiar o HackTricks:
|
|
|
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](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-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|