hacktricks/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md
2024-02-10 13:03:23 +00:00

7.6 KiB

BrowExt - ClickJacking

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Informazioni di base

Questa pagina sfrutta una vulnerabilità di ClickJacking in un'estensione del browser.
Se non sai cos'è il ClickJacking, controlla:

{% content-ref url="../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 i documenti di Chrome a riguardo:

Queste risorse sarebbero quindi disponibili in una pagina web tramite l'URL chrome-extension://[PACKAGE ID]/[PATH], che può essere generato con il metodo extension.getURL. Le risorse consentite vengono servite con gli appropriati header CORS, quindi sono disponibili tramite meccanismi come XHR.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. Ciò 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 delle autorizzazioni 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):

"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 PrivacyBadger nel browser, potrebbe essere incorporato all'interno di un iframe. Questa incorporazione potrebbe essere sfruttata per ingannare gli utenti facendoli 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 aumento del tracciamento. Una dimostrazione visuale di questa vulnerabilità può essere visualizzata in un esempio di video ClickJacking fornito al link https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.

Per risolvere questa vulnerabilità, è stata implementata una soluzione semplice: la rimozione di /skin/* dalla lista delle web_accessible_resources. Questa modifica ha efficacemente mitigato il rischio garantendo che il contenuto della directory skin/ non potesse essere accessibile o manipolato tramite risorse accessibili tramite web.

La correzione è stata semplice: rimuovere /skin/* dalle web_accessible_resources.

PoC

<!--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 di Metamask

Un articolo sul blog su un ClickJacking in Metamask può essere trovato qui. In questo caso, Metamask ha risolto la vulnerabilità verificando che il protocollo utilizzato per accedervi fosse https: o http: (non chrome: ad esempio):

Un altro ClickJacking risolto nell'estensione Metamask era che gli utenti potevano fare clic 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 sfruttarla mostrando qualcosa di normale per far cliccare la vittima per aggiungerla alla whitelist senza accorgersene, per poi tornare alla pagina di phishing che sarebbe stata aggiunta alla whitelist.

Esempio di 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 {% endcontent-ref %}

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: