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

9.2 KiB

Invador DOM

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

Invador DOM

O Invador DOM é uma ferramenta do navegador instalada no navegador integrado do Burp. Ele ajuda a detectar vulnerabilidades de XSS 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 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 XSS 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 DOM. 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 XSS 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 DOM, semelhante à função do Burp Repeater.
  3. Alteração automática e envio de mensagens da web para sondar o XSS DOM.

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 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 a carga útil é enviada. 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 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 🎥