hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

8.2 KiB

DOM Invader

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

DOM Invader

DOM Invader é uma ferramenta de navegador instalada no navegador integrado do Burp. 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 automaticamente vulnerabilidades 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:

Agora atualize a página e, no 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. 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 URL param 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.

Post Messages

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 solicitações/respostas HTTP do Burp Proxy.
  2. Modificação e reemissão de mensagens web para testar manualmente o 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 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 é 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á-lo:

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:

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

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: