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

6.1 KiB

BrowExt - ClickJacking

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Ova stranica će iskoristiti ranjivost ClickJacking-a u Browser ekstenziji.
Ako ne znate šta je ClickJacking, proverite:

{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}

Ekstenzije sadrže datoteku manifest.json i ta JSON datoteka ima polje web_accessible_resources. Evo šta Chrome dokumentacija kaže o tome:

Ovi resursi bi bili dostupni na veb stranici putem URL-a chrome-extension://[PACKAGE ID]/[PATH], koji se može generisati pomoću extension.getURL metode. Resursi na dozvoljenoj listi se serviraju sa odgovarajućim CORS zaglavljima, tako da su dostupni putem mehanizama poput XHR.1

web_accessible_resources u browser ekstenziji nisu dostupni samo putem veba; takođe funkcionišu sa inherentnim privilegijama ekstenzije. To znači da imaju mogućnost da:

  • Promene stanje ekstenzije
  • Učitaju dodatne resurse
  • Interaguju sa pregledačem do određene mere

Međutim, ova funkcija predstavlja sigurnosni rizik. Ako resurs unutar web_accessible_resources ima značajnu funkcionalnost, napadač bi potencijalno mogao da ugradi ovaj resurs u spoljnu veb stranicu. Nesumnjivi korisnici koji posete ovu stranicu možda nehotice aktiviraju ovaj ugrađeni resurs. Takva aktivacija može dovesti do neželjenih posledica, zavisno od dozvola i sposobnosti resursa ekstenzije.

Primer PrivacyBadger-a

U ekstenziji PrivacyBadger, identifikovana je ranjivost koja se odnosi na skin/ direktorijum koji je deklarisan kao web_accessible_resources na sledeći način (Proverite originalni blog post):

"web_accessible_resources": [
"skin/*",
"icons/*"
]

Ova konfiguracija dovela je do potencijalnog sigurnosnog problema. Konkretno, fajl skin/popup.html, koji se prikazuje prilikom interakcije sa ikonicom PrivacyBadger u pregledaču, mogao bi biti ugrađen unutar iframe-a. Ovo ugrađivanje moglo bi biti iskorišćeno da bi se korisnici prevarili da nenamerno kliknu na "Onemogući PrivacyBadger za ovaj sajt". Takva akcija ugrozila bi privatnost korisnika onemogućavanjem zaštite PrivacyBadger-a i potencijalno izložila korisnika povećanom praćenju. Vizuelna demonstracija ovog eksploata može se pogledati u primeru ClickJacking videa dostupnom na https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.

Da bi se rešila ova ranjivost, implementirano je jednostavno rešenje: uklanjanje /skin/* sa liste web_accessible_resources. Ova promena efikasno je umanjila rizik osiguravajući da sadržaj direktorijuma skin/ ne može biti pristupljen ili manipulisan putem web-pristupačnih resursa.

Popravka je bila jednostavna: ukloniti /skin/* iz web_accessible_resources liste.

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>

Primer sa Metamaskom

Blog post o ClickJacking-u u Metamasku možete pronaći ovde. U ovom slučaju, Metamask je popravio ranjivost proverom da li je korišćeni protokol za pristup bio https: ili http: (a ne chrome: na primer):

Još jedan rešen ClickJacking u Metamask ekstenziji bio je taj što su korisnici mogli kliknuti da dodaju na belu listu kada je stranica bila sumnjiva da je fising zbog “web_accessible_resources”: [“inpage.js”, “phishing.html”]. Pošto je ta stranica bila ranjiva na ClickJacking, napadač bi mogao da je zloupotrebi prikazujući nešto normalno kako bi žrtva kliknula da je doda na belu listu ne primećujući, a zatim se vratila na stranicu za ribarenje koja će biti dodata na belu listu.

Primer sa Steam Inventory Helperom

Proverite sledeću stranicu da vidite kako je XSS u ekstenziji pregledača povezan sa ranjivošću ClickJacking:

{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}

Reference