Πολεμικά Παίγνια: OTW Natas #5

Είμαστε πλέον στο πέμπτο επίπεδο από αυτό το πολεμικό παίγνιο για υπηρεσίες ιστού του διαδικτύου. Αυτό το επίπεδο μας εισάγει ένα νέο αντικείμενο και μας διδάσκει το πως μπορούμε να το εκμεταλλευτούμε αλλά και να προστατευτούμε από την εκμετάλλευση του. Όπως σε όλα τα επίπεδα, έτσι και εδώ είναι πολύ σημαντικό τόσο να δοκιμάζετε μόνοι σας τις λύσεις προτού διαβάσετε κάποια άλλη όπως η δική μας, όσο και να έχετε κατανοήσει πλήρως όλα τα προηγούμενα επίπεδα. Οι δικές μας λύσεις για τα προηγούμενα επίπεδα είναι διαθέσιμες με τα παρακάτω άρθρα.

Πηγή: Blog.Makensi.es
Πηγή: Blog.Makensi.es

Όπως κάθε φορά, συνδεόμαστε στο επίπεδο με τα στοιχεία πρόσβασης που αποκτήσαμε από το προηγούμενο. Αμέσως βλέπουμε το μήνυμα «Access disallowed. You are not logged in» (Δεν επιτρέπεται η πρόσβαση. Δεν είστε συνδεδεμένος) στη σελίδα όπως φαίνεται και από τη παρακάτω εικόνα.

Πηγή: OverTheWire.org
Πηγή: OverTheWire.org

Αν προσπαθήσουμε να δούμε τη σελίδα σε μορφή HTML όπως κάναμε μέχρι αυτό το σημείο, θα δούμε ότι δεν υπάρχει καμία πληροφορία για να μας βοηθήσει. Έπειτα από λίγη προσπάθεια ανακαλύψαμε ωστόσο κάτι που δεν το είχαμε προσέξει νωρίτερα. Στο Πρωτόκολλο Μεταφοράς Υπερκειμένου (HTTP) υπάρχει ένας τρόπος αποθήκευσης δεδομένων από τον εξυπηρετητή προς τον πελάτη που ονομάζεται HTTP cookie ή απλά cookie. Όπως έχουμε δείξει και στα προηγούμενα επίπεδα, το πρωτόκολλο HTTP δεν εγκαθιστά μία μόνιμη σύνδεση επικοινωνίας. Αντιθέτως, βασίζεται στη δομή αιτήματος και απάντησης. Δηλαδή, εάν ο χρήστης θέλει να δει τη σελίδα Χ, ο εξυπηρετητής του την αποστέλλει και δεν υπάρχει περαιτέρω επικοινωνία. Προκειμένου σε μετέπειτα αιτήματα ο εξυπηρετητής να αναγνωρίζει τον αποστολέα/πελάτη του αιτήματος, το πρωτόκολλο HTTP προσφέρει τα λεγόμενα cookie. Τα cookie είναι απλώς μία μεταβλητή με μία τιμή που ορίζει ο εξυπηρετητής και αποθηκεύεται στον περιηγητή ιστού του υπολογιστή μας για τη συγκεκριμένη σελίδα. Έτσι, όταν ξαναστείλουμε κάποιο αίτημα, ο περιηγητής μας θα δει ότι έχουμε κάποιο cookie για αυτή τη διεύθυνση και θα το επισυνάψει στο αίτημα. Από την άλλη πλευρά, όταν ο εξυπηρετητής λάβει το αίτημα θα διαβάσει τα περιεχόμενα του cookie και θα μπορέσει να αναγνωρίσει από ποιον ακριβώς ήρθε αυτό το αίτημα. Με αυτό το τρόπο οι σύγχρονες ιστοσελίδες επιτρέπουν λειτουργίες όπως να μη ζητάνε από το χρήστη να συνδέεται συνεχώς, να του δείχνουν προηγούμενα βήματα που είχε κάνει, κτλ. Δηλαδή, στη πλευρά του εξυπηρετητή υπάρχει μία βάση δεδομένων που έχει αντιστοιχία του κάθε cookie και του τι κάνει. Σαφώς, η κάθε σελίδα μπορεί να χρησιμοποιεί πολλά διαφορετικά cookie για διαφορετικές λειτουργίες.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Από τη πλευρά του χρήστη υπάρχει ένα τακτικό πλεονέκτημα. Καθώς τα cookie αποθηκεύονται στο περιηγητή ιστού, έχουμε πλήρη πρόσβαση σε αυτά και στα περιεχόμενα τους. Για παράδειγμα, για τον περιηγητή ιστού Google Chrome υπάρχει το εργαλείο EditThisCookie που μπορείτε να το βρείτε εδώ. Αντίστοιχα εργαλεία υπάρχουν για όλους τους περιηγητές ιστού αλλά δεν έχει νόημα να τα δούμε όλα. Ας εγκαταστήσουμε το EditThisCookie και ας δούμε αν υπάρχει κάποιο cookie από τη σελίδα του παιχνιδιού.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Βλέπουμε ότι υπάρχουν τρία cookie για αυτή τη σελίδα με ονόματα __cfduid, __utma, και loggedin. Σίγουρα το cookie με όνομα loggedin φαίνεται αρκετά ενδιαφέρον. Εάν πατήσουμε επάνω του για να δούμε τα περιεχόμενα του, θα δούμε αυτό που βλέπετε στην επόμενη εικόνα.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Βλέπουμε ότι έχει τιμή 0 (μηδέν), ότι είναι για τη σελίδα natas5.natas.labs.overthewire.org, ισχύει για την αρχική σελίδα (δηλαδή για το μονοπάτι / ή Path στα Αγγλικά) και μερικές άλλες πληροφορίες όπως πότε θα σβηστεί/λήξει, κτλ. Μπορούμε να δοκιμάσουμε να το αλλάξουμε σε κάτι άλλο και να κάνουμε ένα αίτημα στη σελίδα για να δούμε αν αυτό θα έχει κάποια διαφορά στην απάντηση του εξυπηρετητή. Ας το κάνουμε 1 (ένα) λοιπόν και μετά θα πατήσουμε το κουμπί καταχώρησης. Στη συνέχεια ανανεώνουμε (reload) τη σελίδα για να κάνουμε έτσι ένα νέο αίτημα με το τροποποιημένο cookie και βλέπουμε ότι πέτυχε.

Πηγή: OverTheWire.org
Πηγή: OverTheWire.org

Οι επιθέσεις παραποίησης των cookie είναι σήμερα από τις πιο σοβαρές ευπάθειες ιστοσελίδων. Αρκετές φορές οι προγραμματιστές ιστοσελίδων δε λαμβάνουν υπόψιν τους ότι ο κάθε χρήστης μπορεί να εισάγει οποιαδήποτε τιμή θέλει στα cookie που λαμβάνει και έτσι τα επεξεργάζονται χωρίς πρώτα να ελέγχουν αν το περιεχόμενο τους είναι έγκυρο. Ένα πραγματικό τέτοιο παράδειγμα από το 2002 μπορείτε να βρείτε εδώ. Αυτό που βλέπετε στο προηγούμενο σύνδεσμο είναι η αναφορά μίας τέτοιας ευπάθειας στο περιβάλλον κατασκευής ιστοσελίδων Portix-PHP. Όπως διαβάζουμε, η σελίδα έστελνε ένα cookie χωρίς ημερομηνία λήξης για να γνωρίζει τη κατάσταση σύνδεσης (session) του χρήστη. Ωστόσο, αλλάζοντας το περιεχόμενο του σε «name=access value=ok» ο καθένας μπορούσε να μετατραπεί από απλός χρήστης σε διαχειριστή. Ο λόγος είναι ότι οι προγραμματιστές του Portix-PHP δεν είχαν σκεφτεί ότι τα cookie δεν είναι ασφαλής τρόπος αποθήκευσης και μετάδοσης τέτοιων ευαίσθητων στοιχείων και πρέπει πάντα να ελέγχονται καθώς οποιοσδήποτε χρήστης μπορεί να τα παραποιήσει όπως ακριβώς μάθαμε σε αυτό το επίπεδο.

Γράψτε τα σχόλια σας εδώ...

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s