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

127 lines
7.5 KiB
Markdown

# BrowExt - ClickJacking
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Informazioni di base
Questa pagina sfrutterà una vulnerabilità di ClickJacking in un'estensione del Browser.\
Se non sai cos'è il ClickJacking, controlla:
{% content-ref url="../clickjacking.md" %}
[clickjacking.md](../clickjacking.md)
{% endcontent-ref %}
Le estensioni contengono il file **`manifest.json`** e quel file JSON ha un campo `web_accessible_resources`. Ecco cosa dicono [le documentazioni di Chrome](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources):
> Queste risorse sarebbero quindi disponibili in una pagina web tramite l'URL **`chrome-extension://[PACKAGE ID]/[PATH]`**, che può essere generato con il **`extension.getURL method`**. Le risorse autorizzate sono servite con intestazioni CORS appropriate, quindi sono disponibili tramite meccanismi come XHR.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
Le **`web_accessible_resources`** in un'estensione del browser non sono solo accessibili tramite il web; operano anche con i privilegi intrinseci dell'estensione. Questo significa che hanno la capacità di:
* Cambiare lo stato dell'estensione
* Caricare risorse aggiuntive
* Interagire con il browser in una certa misura
Tuttavia, questa funzionalità presenta un rischio per la sicurezza. Se una risorsa all'interno di **`web_accessible_resources`** ha una funzionalità significativa, un attaccante potrebbe potenzialmente incorporare questa risorsa in una pagina web esterna. Gli utenti ignari che visitano questa pagina potrebbero attivare involontariamente questa risorsa incorporata. Tale attivazione potrebbe portare a conseguenze indesiderate, a seconda dei permessi e delle capacità delle risorse dell'estensione.
## Esempio di PrivacyBadger
Nell'estensione PrivacyBadger, è stata identificata una vulnerabilità relativa alla directory `skin/` dichiarata come `web_accessible_resources` nel seguente modo (Controlla il [post originale del blog](https://blog.lizzie.io/clickjacking-privacy-badger.html)):
```json
"web_accessible_resources": [
"skin/*",
"icons/*"
]
```
Questa configurazione ha portato a un potenziale problema di sicurezza. In particolare, il file `skin/popup.html`, che viene visualizzato al momento dell'interazione con l'icona di PrivacyBadger nel browser, potrebbe essere incorporato all'interno di un `iframe`. Questo embedding potrebbe essere sfruttato per ingannare gli utenti a cliccare involontariamente su "Disabilita PrivacyBadger per questo sito web". Tale azione comprometterebbe la privacy dell'utente disabilitando la protezione di PrivacyBadger e potenzialmente esponendo l'utente a un tracciamento aumentato. Una dimostrazione visiva di questo exploit può essere vista in un esempio video di ClickJacking fornito su [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
Per affrontare questa vulnerabilità, è stata implementata una soluzione semplice: la rimozione di `/skin/*` dall'elenco delle `web_accessible_resources`. Questa modifica ha effettivamente mitigato il rischio assicurando che il contenuto della directory `skin/` non potesse essere accessibile o manipolato tramite risorse web-accessibili.
La soluzione è stata semplice: **rimuovere `/skin/*` dalle `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>
```
## Esempio Metamask
Un [**post del blog su un ClickJacking in metamask può essere trovato qui**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). In questo caso, Metamask ha risolto la vulnerabilità controllando che il protocollo utilizzato per accedervi fosse **`https:`** o **`http:`** (non **`chrome:`** per esempio):
<figure><img src="../../.gitbook/assets/image (21).png" alt=""><figcaption></figcaption></figure>
**Un altro ClickJacking risolto** nell'estensione Metamask era che gli utenti potevano **Cliccare per aggiungere alla whitelist** quando una pagina era sospetta di phishing a causa di `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Poiché quella pagina era vulnerabile al Clickjacking, un attaccante poteva abusarne mostrando qualcosa di normale per far cliccare la vittima per aggiungerla alla whitelist senza accorgersene, e poi tornare alla pagina di phishing che sarà aggiunta alla whitelist.
## Esempio Steam Inventory Helper
Controlla la seguente pagina per vedere come un **XSS** in un'estensione del browser è stato concatenato con una vulnerabilità di **ClickJacking**:
{% content-ref url="browext-xss-example.md" %}
[browext-xss-example.md](browext-xss-example.md)
{% endcontent-ref %}
## Riferimenti
* [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)
{% hint style="success" %}
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository github.
</details>
{% endhint %}