XSSI (Cross-Site Script Inclusion)
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)
Cross-Site Script Inclusion (XSSI) είναι μια ευπάθεια που προκύπτει από τη φύση της ετικέτας script
στο HTML. Σε αντίθεση με τους περισσότερους πόρους, οι οποίοι υπόκεινται στην Πολιτική Ίδιου Προέλευσης (SOP), τα σενάρια μπορούν να συμπεριληφθούν από διαφορετικά domains. Αυτή η συμπεριφορά προορίζεται να διευκολύνει τη χρήση βιβλιοθηκών και άλλων πόρων που φιλοξενούνται σε διαφορετικούς διακομιστές, αλλά εισάγει επίσης έναν πιθανό κίνδυνο ασφάλειας.
Bypass of SOP: Τα σενάρια εξαιρούνται από την Πολιτική Ίδιου Προέλευσης, επιτρέποντάς τους να συμπεριληφθούν σε διαφορετικά domains.
Data Exposure: Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτή τη συμπεριφορά για να διαβάσει δεδομένα που φορτώνονται μέσω της ετικέτας script
.
Impact on Dynamic JavaScript/JSONP: XSSI είναι ιδιαίτερα σχετικό για δυναμικό JavaScript ή JSON με Padding (JSONP). Αυτές οι τεχνολογίες συχνά χρησιμοποιούν πληροφορίες "ambient-authority" (όπως cookies) για αυθεντικοποίηση. Όταν γίνεται αίτημα σενάριου σε διαφορετικό host, αυτά τα διαπιστευτήρια (π.χ. cookies) περιλαμβάνονται αυτόματα στο αίτημα.
Authentication Token Leakage: Εάν ένας επιτιθέμενος μπορεί να παραπλανήσει τον περιηγητή ενός χρήστη να ζητήσει ένα σενάριο από έναν διακομιστή που ελέγχει, μπορεί να είναι σε θέση να αποκτήσει πρόσβαση σε ευαίσθητες πληροφορίες που περιέχονται σε αυτά τα αιτήματα.
Static JavaScript - Αυτό αντιπροσωπεύει τη συμβατική μορφή του XSSI.
Static JavaScript with Authentication - Αυτός ο τύπος είναι ξεχωριστός επειδή απαιτεί αυθεντικοποίηση για πρόσβαση.
Dynamic JavaScript - Περιλαμβάνει JavaScript που δημιουργεί δυναμικά περιεχόμενο.
Non-JavaScript - Αναφέρεται σε ευπάθειες που δεν περιλαμβάνουν άμεσα JavaScript.
The following information is a sumary of https://www.scip.ch/en/?labs.20160414. Check it for further details.
Σε αυτή την προσέγγιση, ιδιωτικές πληροφορίες είναι ενσωματωμένες μέσα σε ένα παγκοσμίως προσβάσιμο αρχείο JavaScript. Οι επιτιθέμενοι μπορούν να εντοπίσουν αυτά τα αρχεία χρησιμοποιώντας μεθόδους όπως η ανάγνωση αρχείων, αναζητήσεις λέξεων-κλειδιών ή κανονικές εκφράσεις. Μόλις εντοπιστούν, το σενάριο που περιέχει ιδιωτικές πληροφορίες μπορεί να συμπεριληφθεί σε κακόβουλο περιεχόμενο, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε ευαίσθητα δεδομένα. Ένα παράδειγμα τεχνικής εκμετάλλευσης φαίνεται παρακάτω:
Αυτοί οι τύποι επιθέσεων XSSI περιλαμβάνουν εμπιστευτικές πληροφορίες που προστίθενται δυναμικά στο σενάριο ως απάντηση σε αίτημα χρήστη. Η ανίχνευση μπορεί να πραγματοποιηθεί στέλνοντας αιτήματα με και χωρίς cookies και συγκρίνοντας τις απαντήσεις. Εάν οι πληροφορίες διαφέρουν, αυτό μπορεί να υποδηλώνει την παρουσία εμπιστευτικών πληροφοριών. Αυτή η διαδικασία μπορεί να αυτοματοποιηθεί χρησιμοποιώντας εργαλεία όπως το DetectDynamicJS Burp extension.
Εάν τα εμπιστευτικά δεδομένα αποθηκεύονται σε μια παγκόσμια μεταβλητή, μπορούν να εκμεταλλευτούν χρησιμοποιώντας παρόμοιες μεθόδους με αυτές που χρησιμοποιούνται στο Regular XSSI. Ωστόσο, εάν τα εμπιστευτικά δεδομένα περιλαμβάνονται σε μια απάντηση JSONP, οι επιτιθέμενοι μπορούν να καταλάβουν τη συνάρτηση callback για να ανακτήσουν τις πληροφορίες. Αυτό μπορεί να γίνει είτε με την παραποίηση παγκόσμιων αντικειμένων είτε με την εγκατάσταση μιας συνάρτησης που θα εκτελείται από την απάντηση JSONP, όπως αποδεικνύεται παρακάτω:
Για μεταβλητές που δεν βρίσκονται στο παγκόσμιο namespace, η prototype tampering μπορεί μερικές φορές να εκμεταλλευτεί. Αυτή η τεχνική εκμεταλλεύεται το σχεδιασμό της JavaScript, όπου η ερμηνεία του κώδικα περιλαμβάνει την περιήγηση στην αλυσίδα πρωτοτύπων για να εντοπιστεί η καλούμενη ιδιότητα. Με την αντικατάσταση ορισμένων συναρτήσεων, όπως το Array
's slice
, οι επιτιθέμενοι μπορούν να αποκτήσουν πρόσβαση και να διαρρεύσουν μη παγκόσμιες μεταβλητές:
Περισσότερες λεπτομέρειες σχετικά με τα επιθετικά διανύσματα μπορούν να βρεθούν στο έργο του Ερευνητή Ασφαλείας Sebastian Lekies, ο οποίος διατηρεί μια λίστα με διανύσματα.
Η έρευνα του Takeshi Terada εισάγει μια άλλη μορφή XSSI, όπου τα αρχεία Non-Script, όπως το CSV, διαρρέουν διασυνοριακά περιλαμβάνοντας τα ως πηγές σε μια ετικέτα script
. Ιστορικές περιπτώσεις XSSI, όπως η επίθεση του Jeremiah Grossman το 2006 για την ανάγνωση ενός πλήρους βιβλίου διευθύνσεων Google και η διαρροή δεδομένων JSON του Joe Walker το 2007, αναδεικνύουν τη σοβαρότητα αυτών των απειλών. Επιπλέον, ο Gareth Heyes περιγράφει μια παραλλαγή επίθεσης που περιλαμβάνει κωδικοποιημένα σε UTF-7 JSON για να ξεφύγει από τη μορφή JSON και να εκτελέσει σενάρια, αποτελεσματική σε ορισμένους περιηγητές:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)