# SOME - Execução de Método de Mesma Origem
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## 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**](./#javascript-function). 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 * Você pode usar este formulário 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 do 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/) * 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:** `` . É 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](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/)