Μετάβαση στο περιεχόμενο

Cross-site scripting

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Αυτή είναι μια παλιά έκδοση της σελίδας, όπως διαμορφώθηκε από τον Tasp21 (συζήτηση | συνεισφορές) στις 10:09, 26 Ιανουαρίου 2012 . Η τρέχουσα διεύθυνση (URL) είναι μόνιμος σύνδεσμος προς αυτή την έκδοση, που μπορεί να διαφέρει σημαντικά από την τρέχουσα έκδοση.

Με τον όρο Cross-site scripting ή XSS (δεν είναι CSS γιατί αλλιώς θα υπήρχε πρόβλημα ονομασίας) αναφερόμαστε στην εκμετάλλευση διάφορων ευπαθειών (vulnerabilities) υπολογιστικών συστημάτων με εισαγωγή κώδικα HTML ή Javascript σε κάποιο ιστοχώρο. Κάποιος κακόβουλος χρήστης, θα μπορούσε να εισάγει κώδικα σε έναν ιστοχώρο, μέσω ενός κειμένου εισόδου για παράδειγμα, ο οποίος αφού δεν θα φιλτραριζόταν από τον ιστοχώρο σωστά, θα μπορούσε να προκαλέσει προβλήματα στον διαχειριστή ή επισκέπτη του ιστοχώρου. παράδειγμα:

http://www.example.com/index.html?name=<script>alert("xss revealed")</script>

Ο κακόβουλος χρήστης θα μπορούσε να επιτύχει :

  • Κλοπή κωδικών/λογαριασμών κλπ προσωπικών δεδομένων
  • Αλλαγή ρυθμίσεων του ιστοχώρου
  • Κλοπή των cookies
  • Ψεύτικη διαφήμιση (μέσω, π.χ., ενός συνδέσμου)

Η ευπάθεια αναφέρεται στην αδυναμία του συστήματος που υποστηρίζει ο ιστοχώρος να φιλτράρει και να απορρίψει τυχόν επιβλαβείς εισόδους.

Γενικά, υπάρχουν τρία είδη XSS επιθέσεων:

  • Μόνιμη: Ο κώδικας επίθεσης αποθηκεύεται στον server που φιλοξενεί τον ιστοχώρο. Σε αυτή τη περίπτωση κάθε επισκέπτης της σελίδας εκτίθεται στην επίθεση
  • Μη μόνιμη': Για να εκτεθεί κάποιος στον κώδικα επίθεσης, θα πρέπει να "πατήσει" σε κάποιο σύνδεσμο
  • Βασισμένες σε DOM

Παράδειγμα 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 κλπ., μπορούν να χρησιμοποιηθούν για την εύρεση αυτών των κακόβουλων λογισμικών, όμως μαζί με χειροκίνητο έλεγχο, καθώς τα περισσότερα από αυτά τα εργαλεία, χρησιμοποιούν συγκεκριμένα πρότυπα αναζήτησης, αγνοώντας τους διαφορετικούς τρόπους κωδικοποίησης ή τις τεχνικές παράβλεψης που μπορεί να χρησιμοποιηθούν.


Δείτε επίσης