hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md
2023-06-06 18:56:34 +00:00

7.6 KiB

Invador DOM

O Invador DOM é uma ferramenta de navegador instalada no navegador integrado do Burp. Ele ajuda a detectar vulnerabilidades DOM XSS 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 Invador DOM integra uma guia 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 DOM XSS, fornecendo contexto e detalhes de sanitização.
  2. Registro, edição e reenvio de mensagens da web enviadas pelo método postMessage() para teste de DOM XSS. O Invador DOM também pode detectar automaticamente vulnerabilidades usando mensagens da web especialmente criadas.
  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.

Habilitar

No navegador integrado do Burp, vá para a extensão Burp e habilite-a:

Agora atualize a página e na Dev Tools você encontrará a guia Invador DOM:

Injetar um canário

Na imagem anterior, você pode ver um grupo aleatório de caracteres, que é o canário. Agora você deve começar a injetá-lo em diferentes partes da web (parâmetros, formulários, URL...) e clicar em pesquisar cada vez. O Invador DOM verificará se o canário terminou em algum sink interessante que possa ser explorado.

Além disso, as opções Injetar parâmetros de URL e Injetar formulários abrirão automaticamente uma nova guia injetando o canário em todos os parâmetros de URL e formulários que encontrar.

Injetar um canário vazio

Se você quiser apenas encontrar sinks potenciais que a página possa ter, mesmo que não sejam exploráveis, você pode procurar por um canário vazio.

Mensagens da web

O Invador DOM permite testar o 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 solicitação/resposta HTTP do Burp Proxy.
  2. Modificação e reenvio de mensagens da web para testar manualmente o DOM XSS, semelhante à função do Burp Repeater.
  3. Alteração automática e envio de mensagens da web para sondar o DOM XSS.

Detalhes da mensagem

Você pode clicar em cada mensagem para ver informações mais detalhadas sobre ela, incluindo se as propriedades origin, data ou source da mensagem são acessadas pelo JavaScript do lado do cliente.

  • origin: Se as informações de origem da mensagem não forem verificadas, você poderá 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 a carga útil é enviada. Se esses dados não forem usados, o sink será 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 a caixa de diálogo de detalhes da mensagem.
  2. Edite o campo Dados conforme necessário.
  3. Clique em Enviar.

Poluição de protótipos

O Invador DOM também pode procurar por vulnerabilidades de poluição de protótipos. Primeiro, você precisa habilitá-lo:

Em seguida, ele procurará por fontes que permitam 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 guia 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 do DOM, clique no botão Procurar por gadgets ao lado de qualquer fonte de poluição de protótipo que o DOM Invader tenha encontrado. O DOM Invader abre uma nova guia e começa a procurar por gadgets adequados.
  2. Na mesma guia, abra a guia DOM Invader no painel DevTools. Uma vez que a varredura é concluída, a visualização do DOM exibe quaisquer sinks que o DOM Invader foi capaz de acessar através dos gadgets identificados. No exemplo abaixo, uma propriedade de gadget chamada html foi passada para o sink innerHTML.

Clobbering do DOM

Na imagem anterior, é possível ver que a varredura de clobbering do DOM pode ser ativada. Uma vez feito isso, o DOM Invader começará a procurar por vulnerabilidades de clobbering do DOM.

Referências

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥