Οι επιθέσεις με έγχυση είναι ένας από τους πιο συνηθισμένους τρόπους με τους οποίους οι χάκερ επιτίθενται σε συστήματα, επειδή τους επιτρέπει να εκτελούν εύκολα πολλές εντολές και κώδικες. Η ένεση εντολών OS είναι μια τέτοια επίθεση έγχυσης που πρέπει να γνωρίζετε. Αυτό εκμεταλλεύεται μια ευπάθεια που οι διαχειριστές συστήματος, βάσης δεδομένων και εφαρμογών ιστού πρέπει να λάβουν πολύ σοβαρά υπόψη τους.
Τι είναι λοιπόν μια επίθεση έγχυσης εντολών OS;
Ορισμός του OS Command Injection
Η ένεση εντολών λειτουργικού συστήματος επιτρέπει σε έναν κακόβουλο εισβολέα να εκτελεί όποια εντολή θέλει, εκμεταλλευόμενο ένα ευάλωτο λειτουργικό σύστημα, πρόγραμμα, εφαρμογή, βάση δεδομένων ή προσθήκη. Συμβαίνει όταν οι εφαρμογές αποτυγχάνουν να επικυρώσουν και να απολυμάνουν σωστά τις παραμέτρους που χρησιμοποιούν κατά την κλήση συναρτήσεων φλοιού όπως π.χ. Σύστημα() ή exec() για την εκτέλεση εντολών συστήματος.
Για να κατανοήσουμε καλύτερα τον εντοπισμό και την εκμετάλλευση της ένεσης εντολών του λειτουργικού συστήματος, είναι χρήσιμο να εξετάσουμε αυτό το ζήτημα σε τρεις κύριες κατηγορίες.
1. Άμεση Έγχυση Εντολής
Σκεφτείτε αυτό από την οπτική γωνία του επιτιθέμενου. Ο κυβερνοεπιτιθέμενος ανακαλύπτει ότι μια εφαρμογή εκτελεί μια συγκεκριμένη εντολή συστήματος. εισάγουν την κακόβουλη εντολή ως μέρος των αναμενόμενων ορισμάτων. Στη συνέχεια, η εφαρμογή εκτελεί την αρχική εντολή ακολουθούμενη από την κακόβουλη.
Ο εισβολέας χρησιμοποιεί μια ποικιλία προσεγγίσεων για να βρει μια τέτοια ευπάθεια. Ο ευκολότερος τρόπος για να καταπολεμηθεί αυτό είναι να διατηρείτε το λειτουργικό σύστημα ενημερωμένο ανά πάσα στιγμή. θα μπορούσατε να το κάνετε αυτό σε συνεργασία με μια αρμόδια ομάδα πληροφορικής. Θα πρέπει να αποφεύγετε όλες τις εφαρμογές και τα προγράμματα που μπορεί να προκαλέσουν ευπάθειες του συστήματος, επειδή ο εισβολέας μπορεί να εισαγάγει απευθείας κώδικα και η ζημιά είναι απρόβλεπτη.
2. Έμμεση Εντολή Έγχυση
Στην περίπτωση έμμεσης ένεσης εντολών, ο εισβολέας δεν εισάγει απευθείας κώδικα ή εντολή στο σύστημα. Για αυτό, χρησιμοποιούν μια ευάλωτη εφαρμογή ή πρόγραμμα στο σύστημα. Η ευπάθεια δημιουργεί μια γέφυρα μεταξύ του εισβολέα και του λειτουργικού συστήματος. Εκμεταλλευόμενος αυτή την επικοινωνία, ο εισβολέας στοχεύει να εκτελέσει κακόβουλους κώδικες και εντολές στον στόχο.
Ο εισβολέας εκτελεί μια σειρά δοκιμών για να εντοπίσει αυτήν την ευπάθεια και ανακαλύπτει ότι το λογισμικό χρησιμοποιεί δεδομένα από μια εξωτερική πηγή, όπως ένα αρχείο ή μια μεταβλητή περιβάλλοντος, για να καλέσει μια εντολή συστήματος. Ο εισβολέας στη συνέχεια τροποποιεί το περιεχόμενο της εξωτερικής πηγής, επομένως περιέχει μια κακόβουλη εντολή. Αυτό στη συνέχεια εκτελείται παράλληλα με τις οδηγίες της αρχικής εφαρμογής.
Η κύρια διαφορά μεταξύ άμεσης και έμμεσης ένεσης εντολών είναι ότι ο εισβολέας χρησιμοποιεί μια εφαρμογή για να επικοινωνήσει με το λειτουργικό σύστημα. Αλλά δεν υπάρχει πραγματική διαφορά μεταξύ της ζημιάς που μπορούν να προκαλέσουν οι δύο μορφές ένεσης, επομένως και οι δύο πρέπει να αντιμετωπιστούν. Γι' αυτό θα πρέπει να βεβαιωθείτε ότι τα προγράμματα στο δίκτυό σας είναι αξιόπιστα και απαραίτητα. Μην κρατάτε εφαρμογές που δεν εμπιστεύεστε στη συσκευή σας.
3. Blind Command Injection
Ένας άλλος τύπος ένεσης εντολών λειτουργικού συστήματος είναι η έγχυση τυφλών εντολών. Αυτό σημαίνει ότι η εφαρμογή δεν επιστρέφει καμία έξοδο από την εντολή στην απόκριση HTTP. Ο εισβολέας χρησιμοποιεί διαφορετικές τεχνικές όπως η χρονική καθυστέρηση και η δρομολόγηση εξόδου για να εκμεταλλευτεί αυτή την ευπάθεια.
Φανταστείτε ότι ψάχνετε για έναν ιστότοπο και η τιμή "/?search=id" στη διεύθυνση URL αλλάζει με κάθε αναζήτηση. Η τιμή αναγνωριστικού εδώ μπορεί να είναι μια σελίδα χρήστη, η διεύθυνση μιας φωτογραφίας προϊόντος ή οποιαδήποτε σελίδα στον ιστότοπο. Ο εισβολέας μπορεί να λάβει διαφορετικά αποτελέσματα αλλάζοντας την τιμή αναγνωριστικού. Είναι δύσκολο να το κάνετε χειροκίνητα, αλλά υπάρχουν εργαλεία όπως το Burp Suite για αυτό. Αργότερα, ο εισβολέας ανακαλύπτει ένα περίεργο στοιχείο σε μια σελίδα: μπορεί να επιστραφεί μια τιμή αναγνωριστικού που, παρόλο που δεν έδειξε κανένα αποτέλεσμα, Η απάντηση του ιστότοπου ήταν 200, που δείχνει ότι όλα είναι καλά. Σε μια τέτοια περίπτωση, ο εισβολέας θα μπορούσε να χρησιμοποιήσει μια τυφλή ένεση εντολών.
Μια τεχνική όπως η χρονική καθυστέρηση είναι ιδιαίτερα χρήσιμη. Δεδομένου ότι η σελίδα που ανοίγει θα είναι κενή, δεν θα λάβετε καμία απάντηση, αλλά ίσως εξακολουθείτε να μπορείτε να συγκεντρώσετε πληροφορίες σχετικά με το τι είναι αποθηκευμένο σε μια βάση δεδομένων με βάση τις χρονικές καθυστερήσεις που φορτώνουν τη σελίδα μόνο εάν είναι ένας συγκεκριμένος χαρακτήρας παρόν. Αυτό είναι πολύ χρονοβόρο για να είναι μια χειροκίνητη διαδικασία, αλλά πολλά εργαλεία μπορούν να αυτοματοποιήσουν την επίθεση.
Παράδειγμα σεναρίου επίθεσης
Ας αναθεωρήσουμε όλα τα παραπάνω μέσα από ένα παράδειγμα. Φανταστείτε ότι έχετε μια εφαρμογή αγορών που επιτρέπει στον χρήστη να δει εάν τα προϊόντα είναι σε απόθεμα. Ας χρησιμοποιήσουμε μια διεύθυνση URL όπως η παρακάτω για πρόσβαση σε όλες αυτές τις πληροφορίες:
example_unsafe_store.com/stockStatus; productID=245&storeID=
Φανταστείτε να περάσετε τα αναγνωριστικά προϊόντος και καταστήματος ως ορίσματα σε μια εντολή φλοιού, όπως "stockstat.pl 245 38", καθώς η εφαρμογή θα έπρεπε να κάνει ερώτημα για παλιές εγγραφές. Εάν ο προγραμματιστής δεν προβεί σε καμία ενέργεια κατά των εισαγωγών εντολών, ένας εισβολέας μπορεί να στείλει μια είσοδο για να εκτελέσει την επιθυμητή εντολή:
& ηχώ this_a_harmful_command &
Εάν αυτή η καταχώρηση μπαίνει στην παράμετρο productID, η εντολή που εκτελείται από την εφαρμογή θα είναι:
stockstat.pl & ηχώ this_a_harmful_command & 38
Η εντολή echo είναι μια χρήσιμη μέθοδος για τον εντοπισμό εγχύσεων εντολών καθώς και για τη διασφάλιση ότι η δεδομένη συμβολοσειρά εμφανίζεται στην έξοδο. Ο χαρακτήρας "&" είναι α διαχωριστικό εντολών κελύφους, άρα αυτό που εκτελείται είναι τρεις ξεχωριστές εντολές, η μία μετά την άλλη. Ως αποτέλεσμα, η έξοδος που επιστρέφεται στον χρήστη θα είναι:
Λάθος -Το αναγνωριστικό προϊόντος δεν βρέθηκε
this_a_harmful_command
38: εντολή δεν βρέθηκε
Εδώ, το αρχείο "stockstat.pl" εκτέλεσε την εντολή χωρίς τα ορίσματα που περίμενε και επομένως επέστρεψε ένα μήνυμα σφάλματος. Στη συνέχεια, η εντολή echo που εισήγαγε ο εισβολέας έτρεξε και ο εισβολέας είδε την έκφραση που εισήγαγε στην οθόνη. Το αρχικό όρισμα, "38", έτρεχε ως εντολή που προκαλεί σφάλματα.
Πώς να προστατευτείτε από τις ενέσεις εντολών του λειτουργικού συστήματος
Αν και η ένεση εντολών είναι ένας ισχυρός και επιβλαβής φορέας επίθεσης, υπάρχουν μερικά κόλπα για να το αποφύγετε. Η λογική πίσω από τις επιθέσεις ένεσης εντολών OS είναι να εκτελούνται ορισμένες εντολές του λειτουργικού συστήματος χρησιμοποιώντας μια εφαρμογή. Πρέπει να σταματήσετε να συμβαίνει αυτό. Υπάρχουν ορισμένα ζητήματα που πρέπει να ληφθούν υπόψη:
- Πρέπει να εμποδίσετε οποιονδήποτε έχει πρόσβαση στην εφαρμογή να μπορεί να εκτελεί κώδικα.
- Θα πρέπει να αποτρέψετε οποιονδήποτε έχει πρόσβαση στην εφαρμογή από το να κάνει αιτήματα στον διακομιστή με συντακτικές εκφράσεις.
- Πρέπει να κρυπτογραφήσετε τις φράσεις που ζητά όποιος έχει πρόσβαση.
Ας εξετάσουμε κάθε στοιχείο ένα προς ένα. Μια καλή λύση στο πρώτο πρόβλημα είναι να χρησιμοποιήστε τη μέθοδο της λίστας επιτρεπόμενων για να αποτρέψετε οποιονδήποτε φθάνει στο επίπεδο εφαρμογής από το να εκτελέσει ορισμένους κωδικούς ή αιτήματα. Όποιος δεν προσδιορίζει δεν θα μπορεί να εκτελέσει κώδικα.
Η λύση στο δεύτερο είναι να μην αποδεχόμαστε κάποιες εκφράσεις κειμένου που χρησιμοποιούνται σε εντολές. Ο χρήστης μπορεί να εισάγει μόνο αριθμητικές τιμές. Εφαρμόστε αυτό μαζί με τη μέθοδο της λίστας επιτρεπόμενων και θα έχετε ένα πολύ πιο ασφαλές σύστημα.
Το τρίτο στοιχείο αφορά την κρυπτογράφηση συντακτικών παραμέτρων όπως ο εισαγόμενος χαρακτήρας και τα κενά. Ως αποτέλεσμα, η μέθοδος επιτρεπόμενης λίστας, ο συντακτικός έλεγχος των εισόδων και η κρυπτογράφηση των εισόδων θα σας προστατεύουν από την ένεση εντολών του λειτουργικού συστήματος.
Οι επιθέσεις με ένεση εξελίσσονται καθημερινά
Υπάρχουν πολλές μέθοδοι έγχυσης με διαφορετικές τεχνικές επίθεσης, όπως εντολή OS, SQL, SSI και XPath. Δεν είναι εύκολο να προσπαθήσεις να αποτρέψεις καθένα από αυτά. Λάβετε υπόψη ότι όλες αυτές οι επιθέσεις εξελίσσονται καθημερινά και εκμεταλλεύονται μικρά τρωτά σημεία που οι προγραμματιστές παρέβλεψαν. Γι' αυτό είναι ζωτικής σημασίας να είστε πάντα ενημερωμένοι και να παρακολουθείτε στενά τις τρέχουσες εξελίξεις στον κόσμο της κυβερνοασφάλειας.