Cross-site scripting

Παράδειγμα XSS σε λογισμικό Apache server

Στον Apache Tomcat υπήρχε ένα κενό ασφαλείας στον κώδικα ενός αρχείου Javascript ονόματι sessionsList.jsp. O κώδικας χρησιμοποιούσε τις μη ασφαλείς μεταβλητές orderBy και sort. Κάποιος κακόβουλος χρήστης, θα μπορούσε, μέσω κάποιου text input field, να δώσει ως είσοδο (σε site που «έτρεχε» με Apache) Javascript κώδικα που θα έβλαπτε τον χρήστη που θα επισκεπτόταν το site κάποια στιγμή αργότερα. Ο κώδικας θα μπορούσε να οδηγήσει τον browser του θύματος σε URL επιλογής του κακόβουλου χρήστη. Εκεί, ο τελευταίος, θα μπορούσε να οργανώσει καλύτερα την επίθεσή του μέσω Javascript κώδικα πάλι, έχοντας την «άδεια» του Apache server…

Ο κώδικας που αφορούσε την παραπάνω ευπάθεια

GET/manager/html/sessions?path=/&sort="><script>alert('xss')</script>order=ASC&action=injectSessions&refresh=Refresh+Sessions+list

Εκδόσεις που έχουν το πρόβλημα

Apache Tomcat 6.0.2 – 6.0.20 εκτός 6.0.10 και 6.0.11

Πως θα εντοπίσεις εάν μία ιστοσελίδα είναι τρωτή

Ο όρος Cross-site scripting (XSS) αναφέρεται στην εκμετάλλευση διαφόρων ευπαθειών υπολογιστικών συστημάτων (π.χ. ιστοχώρων), όπου κάποιος κακόβουλος χρήστης θα μπορούσε να εισάγαγει κακόβουλο κώδικα, ο οποίος θα προκαλέσει προβλήματα στον διαχειριστή ή τον επισκέπτη του ιστοχώρου. Τα ευπαθή σημεία, ως προς τα cross-site-scripts, μπορεί να είναι δύσκολο να αναγνωρισθούν και να αφαιρεθούν από μια Διαδικτυακή εφαρμογή. Η καλύτερη πρακτική για να αναζητήσει κανείς αυτού του είδους τα σημεία, είναι να πραγματοποιήσει μια εκτενή ανασκόπηση του κώδικα αναζητώντας τα σημεία αυτά όπου εισάγει δεδομένα, μέσω μιας φόρμας εισόδου, τα οποία πιθανόν να οδηγούν σε κάποιο HTML output. Μια ποικιλία από HTML tags (όπως <img src…>, <iframe …>, <bgsound scr…> κλπ) μπορούν να χρησιμοποιηθούν για την μετάδοση ενός κακόβουλου κώδικα JavaScript. Ειδικές εφαρμογές-σαρωτές, που υπάρχουν στο διαδίκτυο, όπως τα Burp Suite, Webnspect, Acunetix, Netsparker, Websecurify, NStalker κλπ., μπορούν να χρησιμοποιηθούν για την εύρεση αυτών των κακόβουλων λογισμικών, όμως μαζί με χειροκίνητο έλεγχο, καθώς τα περισσότερα από αυτά τα εργαλεία, χρησιμοποιούν συγκεκριμένα πρότυπα αναζήτησης, αγνοώντας τους διαφορετικούς τρόπους κωδικοποίησης ή τις τεχνικές παράβλεψης που μπορεί να χρησιμοποιηθούν.

Τρόποι προστασίας από επιθέσεις (XSS)

Οι XSS (cross site scripting) είναι από τις πιο διαδεδομένες επιθέσεις στο διαδίκτυο. Εκμεταλλεύονται διάφορες ευπάθειες των υπολογιστικών συστημάτων για να πραγματοποιήσουν τις επιθέσεις τους. Οι επιθέσεις αυτές γίνονται από κάποιο κακόβουλο χρήστη που έχει ως στόχο: την κλοπή ταυτότητας, πρόσβαση σε ευαίσθητες ή εμπιστευτικές πληροφορίες, στην κατασκοπία πλοήγησης των χρηστών, στην ψεύτικη διαφήμιση. Για την πρόληψη και για να ελαχιστοποιήσετε την πιθανότητα μιας τέτοιας επίθεσης (xss) θα πρέπει να εφαρμόσετε τους ακόλουθους τρόπους προστασίας: Αρχικά θα μπορούσατε να περάσετε όλα τα εξωτερικά δεδομένα μέσα από ένα φίλτρο το οποίο θα αφαιρεί επικίνδυνες λέξεις-κλειδιά. Να επιλέγετε μόνο συνδέσεις από τον κεντρικό δικτυακό τόπο που θέλετε να δείτε. Πρέπει να είστε ιδιαίτερα προσεκτικοί όταν διαβάζετε ένα μήνυμα σε ένα δημόσιο πίνακα από ένα πρόσωπο το οποίο δεν γνωρίζετε. Επίσης μπορείτε να απενεργοποιήσετε το javascript στις ρυθμίσεις του browser σας. Αποφεύγετε “περίεργες” ιστοσελίδες (site) και αν πρέπει να μπείτε, επιλέξτε να μπείτε από virtualbox ή από κάποιο guest account που έχετε δημιουργήσει. Αποφεύγετε να αποθηκεύετε passwords στον browser γιατί μπορεί να υποκλαπούν. Χρησιμοποιώντας τους πιο πάνω τρόπους αντιμετώπισης επιθέσεων θα μειώσετε τις πιθανότητες κακόβουλης παρέμβασης στο δικτυακό σας σύστημα.