disable_functions bypass - dl function
Σημαντική σημείωση:
dl
είναι μια συνάρτηση PHP που μπορεί να χρησιμοποιηθεί για να φορτώσει επεκτάσεις PHP. Αν η συνάρτηση δεν είναι απενεργοποιημένη, μπορεί να καταχραστεί για να παρακάμψει το disable_functions
και να εκτελέσει αυθαίρετες εντολές.
Ωστόσο, έχει κάποιους αυστηρούς περιορισμούς:
Η συνάρτηση
dl
πρέπει να είναι παρούσα στο περιβάλλον και όχι απενεργοποιημένηΗ επέκταση PHP πρέπει να είναι συμπιεσμένη με την ίδια κύρια έκδοση (έκδοση API PHP) που χρησιμοποιεί ο διακομιστής (μπορείτε να δείτε αυτές τις πληροφορίες στην έξοδο του phpinfo)
Η επέκταση PHP πρέπει να είναι τοποθετημένη στον κατάλογο που είναι ορισμένος από την κατεύθυνση
extension_dir
(μπορείτε να το δείτε στην έξοδο του phpinfo). Είναι πολύ απίθανο ότι ένας επιτιθέμενος που προσπαθεί να καταχραστεί τον διακομιστή θα έχει δικαιώματα εγγραφής σε αυτόν τον κατάλογο, οπότε αυτή η απαίτηση πιθανότατα θα σας αποτρέψει από το να καταχραστείτε αυτή την τεχνική).
Αν πληροίτε αυτές τις απαιτήσεις, συνεχίστε να διαβάζετε την ανάρτηση https://antichat.com/threads/70763/ για να μάθετε πώς να παρακάμψετε το disable_functions. Ακολουθεί μια περίληψη:
Η συνάρτηση dl χρησιμοποιείται για να φορτώσει δυναμικά επεκτάσεις PHP κατά την εκτέλεση του σεναρίου. Οι επεκτάσεις PHP, που συνήθως είναι γραμμένες σε C/C++, ενισχύουν τη λειτουργικότητα της PHP. Ο επιτιθέμενος, παρατηρώντας ότι η συνάρτηση dl
δεν είναι απενεργοποιημένη, αποφασίζει να δημιουργήσει μια προσαρμοσμένη επέκταση PHP για να εκτελέσει εντολές συστήματος.
Βήματα που ακολουθεί ο επιτιθέμενος:
Αναγνώριση Έκδοσης PHP:
Ο επιτιθέμενος προσδιορίζει την έκδοση PHP χρησιμοποιώντας ένα σενάριο (
<?php echo 'PHP Version is '.PHP_VERSION; ?>
).
Απόκτηση Πηγών PHP:
Κατεβάζει τις πηγές PHP από την επίσημη ιστοσελίδα PHP ή το αρχείο αν η έκδοση είναι παλαιότερη.
Τοπική Ρύθμιση PHP:
Εξάγει και εγκαθιστά την συγκεκριμένη έκδοση PHP στο σύστημά του.
Δημιουργία Επέκτασης:
Μελετά δημιουργία επεκτάσεων PHP και εξετάζει τον πηγαίο κώδικα PHP.
Επικεντρώνεται στην αναπαραγωγή της λειτουργικότητας της συνάρτησης exec που βρίσκεται στο
ext/standard/exec.c
.
Σημειώσεις για τη Συμπίεση της Προσαρμοσμένης Επέκτασης:
ZEND_MODULE_API_NO:
Το
ZEND_MODULE_API_NO
στοbypass.c
πρέπει να ταιριάζει με την τρέχουσα κατασκευή Zend Extension, που μπορεί να ανακτηθεί με:
Τροποποίηση PHP_FUNCTION:
Για πρόσφατες εκδόσεις PHP (5, 7, 8), η
PHP_FUNCTION(bypass_exec)
μπορεί να χρειαστεί προσαρμογή. Το παρεχόμενο απόσπασμα κώδικα περιγράφει αυτή την τροποποίηση.
Αρχεία Προσαρμοσμένης Επέκτασης:
bypass.c:
Υλοποιεί τη βασική λειτουργικότητα της προσαρμοσμένης επέκτασης.
php_bypass.h:
Αρχείο κεφαλίδας, ορίζοντας τις ιδιότητες της επέκτασης.
config.m4:
Χρησιμοποιείται από το
phpize
για να ρυθμίσει το περιβάλλον κατασκευής για την προσαρμοσμένη επέκταση.
Κατασκευή της Επέκτασης:
Εντολές Συμπίεσης:
Χρησιμοποιεί
phpize
,./configure
, καιmake
για να συμπιέσει την επέκταση.Το αποτέλεσμα
bypass.so
βρίσκεται στη συνέχεια στον υποκατάλογο modules.
Καθαρισμός:
Εκτελεί
make clean
καιphpize --clean
μετά τη συμπίεση.
Ανέβασμα και Εκτέλεση στον Θύμα:
Συμβατότητα Έκδοσης:
Διασφαλίζει ότι οι εκδόσεις API PHP ταιριάζουν μεταξύ των συστημάτων του επιτιθέμενου και του θύματος.
Φόρτωση Επέκτασης:
Χρησιμοποιεί τη συνάρτηση
dl
, παρακάμπτοντας τους περιορισμούς χρησιμοποιώντας σχετικές διαδρομές ή ένα σενάριο για να αυτοματοποιήσει τη διαδικασία.
Εκτέλεση Σεναρίου:
Ο επιτιθέμενος ανεβάζει το
bypass.so
και ένα σενάριο PHP στον διακομιστή του θύματος.Το σενάριο χρησιμοποιεί τη συνάρτηση
dl_local
για να φορτώσει δυναμικά τοbypass.so
και στη συνέχεια καλεί τηbypass_exec
με μια εντολή που περνά μέσω της παραμέτρου ερωτήματοςcmd
.
Εκτέλεση Εντολής:
Ο επιτιθέμενος μπορεί τώρα να εκτελέσει εντολές προσβάλλοντας:
http://www.example.com/script.php?cmd=<command>
Αυτή η λεπτομερής περιγραφή περιγράφει τη διαδικασία δημιουργίας και ανάπτυξης μιας επέκτασης PHP για την εκτέλεση εντολών συστήματος, εκμεταλλευόμενη τη συνάρτηση dl
, η οποία θα έπρεπε ιδανικά να είναι απενεργοποιημένη για να αποτραπούν τέτοιες παραβιάσεις ασφαλείας.
Last updated