DOM Invader

Reading time: 5 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

DOM Invader

DOM Invader é uma ferramenta de navegador instalada no navegador embutido do Burp. Ela ajuda na detecção de vulnerabilidades DOM XSS usando várias fontes e sinks, incluindo mensagens da web e poluição de protótipos. A ferramenta vem pré-instalada como uma extensão.

DOM Invader 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 testes de DOM XSS, fornecendo detalhes de contexto e sanitização.
  2. Registro, edição e reenvio de mensagens da web enviadas via o método postMessage() para testes de DOM XSS. O DOM Invader 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 varredura de gadgets controláveis enviados para sinks arriscados.
  4. Identificação de vulnerabilidades de clobbering DOM.

Ative-o

No navegador embutido do Burp, vá para a extensão Burp e ative-a:

Agora, atualize a página e nas Dev Tools você encontrará a aba DOM Invader:

Injete um Canary

Na imagem anterior, você pode ver um grupo aleatório de caracteres, que é o Canary. Você deve agora começar a injetá-lo em diferentes partes da web (parâmetros, formulários, url...) e cada vez que clicar em buscar, o DOM Invader 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.

Injete um Canary vazio

Se você apenas quiser encontrar sinks potenciais 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 da web com recursos como:

  1. Registro de mensagens da 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 da web para testar manualmente por DOM XSS, similar à função do Burp Repeater.
  3. Alteração automática e envio de mensagens da web para sondar DOM XSS.

Detalhes da mensagem

Informações detalhadas podem ser visualizadas sobre cada mensagem clicando nela, incluindo 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 ser capaz de enviar mensagens de origem cruzada para o manipulador de eventos de um domínio externo arbitrário. Mas se for verificado, ainda pode ser inseguro.
  • data: É aqui que a carga útil é enviada. Se esses dados não forem usados, o sink é 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 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

DOM Invader também pode procurar por vulnerabilidades de Poluição de Protótipos. Primeiro, você precisa ativá-lo:

Em seguida, ele procurará fontes que permitem adicionar propriedades arbitrárias ao Object.prototype.

Se algo for encontrado, um botão Testar 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. O escaneamento 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 do escaneamento, 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, DOM Invader começará a procurar por vulnerabilidades de DOM clobbering.

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks