hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md
2023-06-06 18:56:34 +00:00

4.9 KiB

SOME - Execução de Método de Mesma Origem

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

Execução de Método de Mesma Origem

Haverá ocasiões em que você poderá executar algum javascript limitado em uma página. Por exemplo, no caso em que você pode controlar um valor de retorno de chamada que será executado.

Nesses casos, uma das melhores coisas que você pode fazer é acessar o DOM para chamar qualquer ação sensível que você possa encontrar lá (como clicar em um botão). No entanto, geralmente você encontrará essa vulnerabilidade em pequenos endpoints sem nada interessante no DOM.

Nesses cenários, esse ataque será muito útil, porque seu objetivo é ser capaz de abusar da execução limitada de JS dentro de um DOM de uma página diferente do mesmo domínio com ações muito interessantes.

Basicamente, o fluxo do ataque é o seguinte:

  • Encontre um retorno de chamada que você possa abusar (potencialmente limitado a [\w\._]).
    • Se não estiver limitado e você puder executar qualquer JS, poderá abusar disso como um XSS regular
  • Faça a vítima abrir uma página controlada pelo atacante
  • A página se abrirá em uma janela diferente (a nova janela terá o objeto opener referenciando a inicial)
  • A página inicial carregará a página onde o DOM interessante está localizado.
  • A segunda página carregará a página vulnerável abusando do retorno de chamada e usando o objeto opener para acessar e executar alguma ação na página inicial (que agora contém o DOM interessante).

{% hint style="danger" %} Observe que mesmo que a página inicial acesse uma nova URL após ter criado a segunda página, o objeto opener da segunda página ainda é uma referência válida para a primeira página no novo DOM.

Além disso, para que a segunda página possa usar o objeto opener, ambas as páginas devem estar na mesma origem. Esta é a razão pela qual, para abusar dessa vulnerabilidade, você precisa encontrar algum tipo de XSS na mesma origem. {% endhint %}

Exploração

Exemplo

  • Você pode encontrar um exemplo vulnerável em https://www.someattack.com/Playground/
    • Observe que neste exemplo o servidor está gerando código javascript e adicionando-o ao HTML com base no conteúdo do parâmetro de retorno de chamada: <script>opener.{callbacl_content}</script> . É por isso que neste exemplo você não precisa indicar o uso de opener explicitamente.
  • Confira também este writeup do CTF: https://ctftime.org/writeup/36068

Referências