BrowExt - XSS Example
Cross-Site Scripting (XSS) μέσω Iframe
Σε αυτήν την ρύθμιση, ένα script περιεχομένου υλοποιείται για να δημιουργήσει ένα Iframe, ενσωματώνοντας ένα URL με παραμέτρους ερωτήματος ως πηγή του Iframe:
Μια δημόσια προσβάσιμη σελίδα HTML, message.html
, έχει σχεδιαστεί για να προσθέτει δυναμικά περιεχόμενο στο σώμα του εγγράφου βάσει των παραμέτρων στο URL:
Ένα κακόβουλο script εκτελείται σε μια σελίδα του αντιπάλου, τροποποιώντας την παράμετρο content
της πηγής του Iframe για να εισαγάγει ένα XSS payload. Αυτό επιτυγχάνεται ενημερώνοντας την πηγή του Iframe για να περιλαμβάνει ένα επιβλαβές script:
Ένα υπερβολικά επιτρεπτικό πολιτικής ασφαλείας περιεχομένου όπως:
επιτρέπει την εκτέλεση του JavaScript, καθιστώντας το σύστημα ευάλωτο σε επιθέσεις XSS.
Μια εναλλακτική προσέγγιση για να προκαλέσετε το XSS περιλαμβάνει τη δημιουργία ενός στοιχείου Iframe και την ρύθμιση της πηγής του για να περιλαμβάνει το επιβλαβές script ως παράμετρο content
.
DOM-based XSS + ClickJacking
Αυτό το παράδειγμα προέρχεται από το αρχικό άρθρο για το θέμα.
Το πρόβλημα προκύπτει από μια ευπάθεια DOM-based Cross-site Scripting (XSS) που βρίσκεται στο /html/bookmarks.html
. Το προβληματικό JavaScript, που ανήκει στο bookmarks.js
, περιγράφεται παρακάτω:
Αυτό το απόσπασμα ανακτά την τιμή από το πεδίο εισαγωγής txtName
και χρησιμοποιεί συνένωση συμβολοσειρών για τη δημιουργία HTML, το οποίο στη συνέχεια προστίθεται στο DOM χρησιμοποιώντας τη λειτουργία .append()
του jQuery.
Συνήθως, η πολιτική ασφαλείας του Content Security Policy (CSP) της επέκτασης του Chrome θα αποτρέπει τέτοιες ευπάθειες. Ωστόσο, λόγω της χαλάρωσης του CSP με το 'unsafe-eval' και της χρήσης των μεθόδων DOM manipulation του jQuery (που χρησιμοποιούν την globalEval()
για να περάσουν σενάρια στην eval()
κατά την εισαγωγή στο DOM), η εκμετάλλευση είναι εξακολουθεί να είναι δυνατή.
Αν και αυτή η ευπάθεια είναι σημαντική, η εκμετάλλευσή της εξαρτάται συνήθως από την αλληλεπίδραση του χρήστη: επίσκεψη στη σελίδα, εισαγωγή ενός XSS payload και ενεργοποίηση του κουμπιού "Προσθήκη".
Για να ενισχυθεί αυτή η ευπάθεια, εκμεταλλεύεται μια δευτερεύουσα ευπάθεια clickjacking. Το αρχείο προσαρτημένων πόρων της επέκτασης του Chrome παρουσιάζει μια εκτεταμένη πολιτική web_accessible_resources
:
Ειδικά, η σελίδα /html/bookmarks.html
είναι ευάλωτη στο framing, και επομένως ευάλωτη στο clickjacking. Αυτή η ευπάθεια χρησιμοποιείται για να πλαισιώσει τη σελίδα μέσα στον ιστότοπο ενός επιτιθέμενου, επικαλύπτοντάς την με DOM στοιχεία για να ανασχεδιάσει απατηλά τη διεπαφή. Αυτή η παραπλάνηση οδηγεί τα θύματα να αλληλεπιδρούν ακούσια με την υποκείμενη επέκταση.
Αναφορές
Last updated