BrowExt - XSS Example
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Σε αυτή τη ρύθμιση, ένα content script υλοποιείται για να δημιουργήσει ένα Iframe, ενσωματώνοντας μια διεύθυνση URL με παραμέτρους ερωτήματος ως πηγή του Iframe:
Μια δημόσια προσβάσιμη σελίδα HTML, message.html
, έχει σχεδιαστεί για να προσθέτει δυναμικά περιεχόμενο στο σώμα του εγγράφου με βάση τις παραμέτρους στη διεύθυνση URL:
Ένα κακόβουλο σενάριο εκτελείται στη σελίδα ενός αντιπάλου, τροποποιώντας την παράμετρο content
της πηγής του Iframe για να εισάγει ένα XSS payload. Αυτό επιτυγχάνεται ενημερώνοντας την πηγή του Iframe για να περιλαμβάνει ένα επιβλαβές σενάριο:
Μια υπερβολικά επιτρεπτική Πολιτική Ασφαλείας Περιεχομένου όπως:
επιτρέπει την εκτέλεση JavaScript, καθιστώντας το σύστημα ευάλωτο σε επιθέσεις XSS.
Μια εναλλακτική προσέγγιση για να προκληθεί το XSS περιλαμβάνει τη δημιουργία ενός στοιχείου Iframe και την ρύθμιση της πηγής του ώστε να περιλαμβάνει το επιβλαβές σενάριο ως την παράμετρο content
:
Αυτό το παράδειγμα προήλθε από την αρχική ανάρτηση.
Το κύριο πρόβλημα προέρχεται από μια ευπάθεια Cross-site Scripting (XSS) που βασίζεται στο DOM, η οποία βρίσκεται στο /html/bookmarks.html
. Ο προβληματικός JavaScript, μέρος του bookmarks.js
, αναλύεται παρακάτω:
Αυτό το απόσπασμα ανακτά την τιμή από το txtName
πεδίο εισόδου και χρησιμοποιεί συγκέντρωση συμβολοσειρών για να δημιουργήσει HTML, το οποίο στη συνέχεια προσαρτάται στο DOM χρησιμοποιώντας τη μέθοδο .append()
της jQuery.
Συνήθως, η Πολιτική Ασφάλειας Περιεχομένου (CSP) της επέκτασης Chrome θα εμπόδιζε τέτοιες ευπάθειες. Ωστόσο, λόγω της χαλάρωσης CSP με ‘unsafe-eval’ και της χρήσης μεθόδων χειρισμού DOM της jQuery (οι οποίες χρησιμοποιούν globalEval()
για να περάσουν σενάρια στο eval()
κατά την εισαγωγή στο DOM), η εκμετάλλευση είναι ακόμα δυνατή.
Ενώ αυτή η ευπάθεια είναι σημαντική, η εκμετάλλευσή της εξαρτάται συνήθως από την αλληλεπίδραση του χρήστη: επισκεπτόμενος τη σελίδα, εισάγοντας ένα XSS payload και ενεργοποιώντας το κουμπί “Προσθήκη”.
Για να ενισχυθεί αυτή η ευπάθεια, εκμεταλλεύεται μια δευτερεύουσα ευπάθεια clickjacking. Το μανιφέστο της επέκτασης Chrome παρουσιάζει μια εκτενή πολιτική web_accessible_resources
:
Σημαντικά, η /html/bookmarks.html
σελίδα είναι επιρρεπής σε framing, επομένως ευάλωτη σε clickjacking. Αυτή η ευπάθεια εκμεταλλεύεται για να πλαισιώσει τη σελίδα μέσα σε έναν ιστότοπο του επιτιθέμενου, επικαλύπτοντάς την με στοιχεία DOM για να ανασχεδιάσει παραπλανητικά τη διεπαφή. Αυτή η χειραγώγηση οδηγεί τα θύματα να αλληλεπιδρούν με την υποκείμενη επέκταση ακούσια.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)