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

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

Πηγή: Infowars.com
Πηγή: Infowars.com

Όπως κάθε φορά, αρχικά συνδεόμαστε με τα στοιχεία πρόσβασης που αποκτήσαμε στο προηγούμενο επίπεδο στη σελίδα από αυτό, το έβδομο, επίπεδο. Δηλαδή, στη σελίδα natas7.natas.labs.overthewire.org. Τότε βλέπουμε τη παρακάτω σελίδα που διαθέτει μόνο δύο συνδέσμους. Το σύνδεσμο «Home» (Αρχική) και το σύνδεσμο «About» (Σχετικά).

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

Ακολουθώντας τη τακτική που ακολουθούμε κάθε φορά μέχρι τώρα θα δούμε τη σελίδα σε μορφή HTML για να κατανοήσουμε καλύτερα πως λειτουργεί. Εκεί μπορούμε να διαβάσουμε ένα σχόλιο που έχει γραφτεί για να μας βοηθήσει. Το σχόλιο αυτό λέει «hint: password for webuser natas8 is in /etc/natas_webpass/natas8» (βοήθεια: ο κωδικός πρόσβασης για το χρήστη ιστού natas8 βρίσκεται στο αρχείο /etc/natas_webpass/natas8). Βλέπετε το αντίστοιχο απόσπασμα εδώ.

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

Φυσικά, η πρώτη μας προσπάθεια είναι να ανακτήσουμε αυτό το αρχείο όπως είχαμε κάνει και στα προηγούμενα επίπεδα. Αλλά όπως βλέπετε και στην επόμενη εικόνα αυτή η μέθοδος δε λειτουργεί αυτή τη φορά. Προσπαθήσαμε δηλαδή να δούμε το αρχείο με επίσκεψη στη σελίδα natas7.natas.labs.overthewire.org/etc/natas_webpass/natas8.

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

Ας παρατηρήσουμε λίγο πιο προσεκτικά το URL της σελίδας του παιχνιδιού. Σε αυτό το επίπεδο το URL δέχεται μία παράμετρο που ως τιμές λαμβάνει τη σελίδα που θέλουμε να επισκεφθούμε. Δηλαδή, όταν διαβάζουμε στο URL /index.php?page=about σημαίνει στον αρχικό κατάλογο του εξυπηρετητή που είναι ο κατάλογος / υπάρχει ένα αρχείο με το όνομα index.php και αυτό το αρχείο εκτελείται στέλνοντας του ως παράμετρο τη μεταβλητή με όνομα page που περιέχει τη τιμή about.

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

Ας δοκιμάσουμε να αλλάξουμε αυτή τη τιμή με το αρχείο που επιθυμούμε. Δηλαδή, θα ζητήσουμε το URL με παράμετρο /index.php?page=natas8 όπως μπορείτε να δείτε και παρακάτω. Αλλά δυστυχώς, ούτε αυτό λειτούργησε. Ωστόσο, βλέπουμε ότι μας δείχνει κάποιο σφάλμα που αναγράφει «No such file or directory in /var/www/natas/natas7/index.php on line 21» που σημαίνει ότι το αρχείο index.php που βρίσκεται μέσα στο φάκελο /var/www/natas/natas7/ στον εξυπηρετητή, δε μπόρεσε να συμπεριλάβει (include) το αρχείο που του ζητήσαμε. Αυτό μας δείχνει ότι η σελίδα έχει μία ευπάθεια σε ένα πολύ γνωστό κενό ασφαλείας που θα περιγράψουμε αμέσως.

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

Με το παραπάνω μήνυμα σφάλματος μπορούμε εύκολα να καταλήξουμε ότι οδηγήσαμε το πρόγραμμα που υπάρχει στη σελίδα index.php να προσπαθήσει να συμπεριλάβει (include) κάτι για το οποίο δεν είναι σχεδιασμένη. Αυτού του τύπου η ευπάθεια ονομάζεται LFI από τα αρχικά των λέξεων Local File Inclusion (Φόρτωση Τοπικού Αρχείου) και σημαίνει ότι λόγω προγραμματιστικού λάθους ένας κακόβουλος χρήστης μπορεί να έχει πρόσβαση σε αρχεία που βρίσκονται τοπικά στον εξυπηρετητή, στα οποία δεν θα έπρεπε όμως να έχει πρόσβαση. Πως όμως θα το εκμεταλλευτούμε; Για να το κάνουμε αυτό πρέπει να κατανοήσουμε ένα σημαντικό και πολύ απλό πράγμα πρώτα. Στα συστήματα αρχείων σε λειτουργικά συστήματα Linux, η ιεραρχία του συστήματος φακέλων είναι όπως βλέπετε παρακάτω. Κάθε τετράγωνο αντιπροσωπεύει ένα φάκελο και έχουμε προσθέσει αυτά που γνωρίζουμε μέχρι τώρα για να το κατανοήσουν όλοι καλύτερα.

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

Εάν βρισκόμαστε μέσα στο φάκελο /var/www/natas/natas7/ τότε πράγματι δε μπορούμε να δούμε το αρχείο που θέλουμε γιατί δε βρίσκεται στο /var/www/natas/natas7/etc/natas_webpass/natas8 αλλά στο /etc/natas_webpass/natas8. Πως όμως θα πούμε στο πρόγραμμα να μεταβεί στους παραπάνω φακέλους πρώτα; Η απάντηση για αυτό είναι οι δύο τελείες. Στο λειτουργικό σύστημα Linux γράφοντας δύο τελείες σημαίνει μετάβαση στο παραπάνω φάκελο. Βλέπετε ένα παράδειγμα παρακάτω. Ο αστερίσκος μας δείχνει που βρισκόμαστε, και με κόκκινο χρώμα φαίνονται οι μετακινήσεις στον ανώτερο φάκελος κάνοντας χρήση των δύο τελειών που αναπαριστούν το ακριβώς ανώτερο φάκελο.

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

Άρα, εφόσον γνωρίζουμε ότι πρέπει να μεταβούμε τέσσερις φακέλους προς τα πίσω για να μπορέσουμε να έχουμε πρόσβαση στο αρχείο που περιέχει το κωδικό πρόσβασης, θα δώσουμε στη παράμετρο μία τιμή σαν αυτήν εδώ: ../../../../etc/natas_webpass/natas8. Όπως βλέπετε, έχει τέσσερις φορές μετάβαση στο προηγούμενο φάκελο και μετά το αρχείο που επιθυμούμε. Σχηματικά το βλέπετε καλύτερα αυτό εδώ.

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

Και αν το εκτελέσουμε αυτό, βλέπουμε ότι πράγματι φόρτωσε το αρχείο αυτό παρότι βρίσκεται σε έναν πολύ διαφορετικό φάκελο από εκεί που είναι οι ιστοσελίδες. Έτσι αποκτήσαμε τον κωδικό πρόσβασης για το επόμενο επίπεδο αλλά και μάθαμε για αυτό το σημαντικό κενό ασφαλείας που είναι πολύ δημοφιλές μέχρι και σήμερα.

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

Για να γίνει καλύτερα αντιληπτό πόσο σοβαρό είναι αυτό το θέμα θα σας δείξουμε ένα πραγματικό παράδειγμα από ένα προϊόν που χρησιμοποιείται από εταιρίες και οργανισμούς παγκοσμίως. Μάλιστα, ένα προϊόν για θέματα ασφαλείας. Η εταιρία Cisco πουλάει ένα προϊόν που ονομάζεται FirePOWER και προσφέρει αναλύσεις για τις τελευταίες απειλές σε μεγάλους οργανισμούς. Τον Οκτώβριο του 2016 μία εταιρία ανακάλυψε στο προϊόν αυτό, στη σελίδα διαχείρισης του που ονομάζεται «Threat Management Console» (Πίνακας Διαχείρισης Απειλών) έχει ένα τέτοιο κενό ασφαλείας. Μπορείτε να διαβάσετε την επίσημη ανακοίνωση εδώ (CVE-2016-6435). Ουσιαστικά, με τη τεχνική που μόλις περιγράψαμε μπορούσε οποιοσδήποτε κακόβουλος χρήστης να ανακτήσει οποιοδήποτε αρχείο του συστήματος μέσω της παραμέτρου files στο URL /events/reports/view.cgi?download=1&files=cisco_file. Για παράδειγμα, μπορούσε κάποιος να διαβάσει το αρχείο με τους λογαριασμούς των χρηστών με ένα αίτημα σαν αυτό.

/events/reports/view.cgi?download=1&files=../../../etc/passwd

Όπως βλέπετε οι γνώσεις που προσφέρει αυτό το παιχνίδι δεν είναι και τόσο αστείες καθώς χρησιμοποιούνται από κακόβουλους χρήστες για απόκτηση μη εξουσιοδοτημένης πρόσβασης στο διαδίκτυο σήμερα. Γι’αυτό πρέπει να ενημερωνόμαστε για να ξέρουμε τις απειλές, τις επιπτώσεις και τα πιο συχνά λάθη που οδηγούν σε κενά ασφαλείας για να τα αποφεύγουμε. Το LFI που μάθαμε σε αυτό το επίπεδο είναι μέχρι και σήμερα από τις πιο συνηθισμένες ευπάθειες ιστοσελίδων.

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

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

Λογότυπο WordPress.com

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

Φωτογραφία Twitter

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

Φωτογραφία Facebook

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

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

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

Σύνδεση με %s