Σε γενικές γραμμές, μπορούμε να πούμε ότι η λύση σε πολλές injection επιθέσεις σε web εφαρμογές γίνετε με την “Επικύρωση εισόδου”. Η επικύρωση εισόδου, είναι ο έλεγχος οποιασδήποτε εισόδου (ή δεδομένων) που παρέχεται από έναν χρήστη ή μια εφαρμογή σε σχέση με τα αναμενόμενα κριτήρια. Η επικύρωση εισόδου αποτρέπει την είσοδο κακόβουλων ή ανεπαρκώς καταρτισμένων δεδομένων σε ένα πληροφοριακό σύστημα. Οι εφαρμογές θα πρέπει να ελέγχουν και να επικυρώνουν όλες τις εισόδους που εισάγονται σε ένα σύστημα για την αποτροπή επιθέσεων και λαθών. Η επικύρωση εισόδου είναι επίσης σημαντική όταν λαμβάνονται δεδομένα από εξωτερικά μέρη ή πηγές. Η λανθασμένη επικύρωση εισόδου μπορεί να επιτρέψει επιθέσεις injection, memory leakage και να εκτεθούν περισσότερα συστήματα σε κίνδυνο.
Ορισμένες εφαρμογές μας επιτρέπουν και μας ενθαρρύνουν να ανεβάσουμε μια φωτογραφία, ένα βίντεο ή ένα άβαταρ του εαυτού μας (σκεφτείτε το Facebook, το Twitter, το LinkedIn, άλλα μέσα κοινωνικής δικτύωσης ή τον ιστότοπο της επιχείρησής σας ή του σχολείου σας). Τι εμποδίζει τους επιτιθέμενους από το να ανεβάσουν απλώς ένα κακόβουλο script; Συνήθως η απάντηση είναι ο έλεγχος και η επικύρωση του τύπου της εισόδου προτού επιτραπεί η μεταφόρτωσή του αρχείου.
Table of Contents
Βήμα #1: Ανοίξτε το Kali και τρέξτε το Burp Suite
Για να ξεκινήσετε, ανοίξτε το Kali Linux και τρέξτε το BurpSuite.
Ενεργοποιήστε το BurpSuite για να στέλνει μέσω proxy τα request και τα responses σας από το πρόγραμμα περιήγησής σας
Βήμα #2: Εκκινήστε το OWASP BWA
Τώρα, ξεκινήστε τον διακομιστή OWASP Broken Web App (BWA) και μεταβείτε στην εφαρμογή DVWA και συνδεθείτε (admin/password).
Αφού συνδεθείτε στο DVWA, μεταβείτε στο κουμπί κάτω αριστερά και ρυθμίστε την ασφάλεια του DVWA σε “medium”. Βεβαιωθείτε ότι έχετε ενεργοποιήσει το intercept στο BurpSuite proxy.
Βήμα #3: Προσπαθήστε να ανεβάσετε ένα κακόβουλο αρχείο
Τώρα, κάντε κλικ στο κουμπί μεταφόρτωσης. Φανταστείτε ότι πρόκειται για τη σελίδα σας στο LinkedIn ή το προφίλ σας στο Twitter. Και στις δύο περιπτώσεις, αναμένεται να ανεβάσετε μια φωτογραφία ή ένα βίντεο.
Σημειώστε στο παρακάτω στιγμιότυπο οθόνης, η εφαρμογή αναφέρει “Choose an image to upload:“.
Τώρα, αντί να ανεβάσουμε μια εικόνα, προσπαθούμε να ανεβάσουμε ένα κακόβουλο Python script.
Δημιούργησα ένα αρχείο και το ονόμασα “malicious_python_script.py” και προσπάθησα να το ανεβάσω. Μπορείτε να δημιουργήσετε οποιοδήποτε αρχείο κειμένου, κακόβουλο ή μη, και να επιχειρήσετε να το ανεβάσετε.
Όπως μπορείτε να δείτε παρακάτω, η εφαρμογή απέρριψε το κακόβουλο script μας επειδή χρησιμοποιεί επικύρωση εισόδου για να βεβαιωθεί ότι το αρχείο μεταφόρτωσης είναι αρχείο εικόνας.
Μπορούμε άραγε να παρακάμψουμε αυτή την επικύρωση εισόδου;
Βήμα #4: Παράκαμψη επικύρωσης εισόδου με το BurpSuite
Ας πάμε στο BurpSuite και ας δούμε το POST που καταγράφηκε από το intercept. Όπως μπορείτε να δείτε στις γραμμές 19 και 20, αναγνώρισε το όνομα του αρχείου και προσδιόρισε τον τύπο του αρχείου ως “text/x-python”. Αυτό είναι το σωστό. Η εφαρμογή σχεδιάστηκε για να επιτρέπει μόνο τη μεταφόρτωση εικόνων και έτσι απέρριψε το κακόβουλο αρχείο μας.
Τώρα, ας μπούμε στο intercepted POST και ας το επεξεργαστούμε ελαφρώς. Η επικύρωση της εισόδου πραγματοποιήθηκε μέσα στη φόρμα στην πλευρά του πελάτη. Τώρα που την υποκλέψαμε στο δρόμο της προς το διακομιστή, μπορούμε να επεξεργαστούμε τον κώδικα ώστε να αντικατοπτρίζει ότι πρόκειται για ένα “ασφαλές” αρχείο πριν το στείλουμε στο διακομιστή. Μπορούμε να το κάνουμε αυτό αλλάζοντας το Content-Type στη γραμμή #20 σε “image/jpeg”. Με αυτόν τον τρόπο ο διακομιστής θα δεχτεί αυτό το αρχείο, πιστεύοντας ότι το αρχείο είναι ένα ασφαλή αρχείο jpeg.
Τώρα, στο BurpSuite, προωθήστε το POST στον διακομιστή.
Το αρχείο μεταφορτώθηκε με επιτυχία και το Python script μας είναι έτοιμο να εκτελεστεί και να κάνει τη βρώμικη δουλειά του!
Επίλογος
Σε γενικές γραμμές, η επικύρωση εισόδου είναι η απάντηση στο πρόβλημα των επιθέσεων εισόδου σε διαδικτυακές εφαρμογές. Σε αυτή την περίπτωση, η web εφαρμογή έκανε επικύρωση εισόδου μόνο στην πλευρά του πελάτη και επομένως ο επιτιθέμενος μπορεί να τροποποιήσει την απάντηση POST στο BurpSuite για να επεξεργαστεί τον τύπο αρχείου και να κάνει τον διακομιστή να δεχτεί το κακόβουλο περιεχόμενό του!