# SOME - Execução de Método de Mesma Origem {{#include ../../banners/hacktricks-training.md}} ## Execução de Método de Mesma Origem Haverá ocasiões em que você pode executar algum javascript limitado em uma página. Por exemplo, no caso em que você pode [**controlar um valor de callback que será executado**](#javascript-function). Nesses casos, uma das melhores coisas que você pode fazer é **acessar o DOM para chamar qualquer** ação sensível que você 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 mais interessantes. Basicamente, o fluxo do ataque é o seguinte: - Encontrar um **callback que você pode abusar** (potencialmente limitado a \[\w\\.\_]). - Se não estiver limitado e você puder executar qualquer JS, você poderia apenas abusar disso como um XSS regular. - Fazer a **vítima abrir uma página** controlada pelo **atacante**. - A **página se abrirá** em uma **nova janela** (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 callback** e usando o objeto **`opener`** para **acessar e executar alguma ação na página inicial** (que agora contém o DOM interessante). > [!CAUTION] > Note que mesmo se a página inicial acessar 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**. ### Exploração - Você pode usar esta forma para **gerar um PoC** para explorar esse tipo de vulnerabilidade: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) - Para encontrar um caminho DOM para um elemento HTML com um clique, você pode usar esta extensão de navegador: [https://www.someattack.com/Playground/targeting_tool](https://www.someattack.com/Playground/targeting_tool) ### Exemplo - Você pode encontrar um exemplo vulnerável em [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) - Note que neste exemplo o servidor está **gerando código javascript** e **adicionando** ao HTML com base no **conteúdo do parâmetro de callback:** ``. É por isso que neste exemplo você não precisa indicar o uso de `opener` explicitamente. - Também confira este writeup de CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) ## Referências - [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) {{#include ../../banners/hacktricks-training.md}}