disable_functions bypass - dl function
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Σημαντική σημείωση:
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
, η οποία θα έπρεπε ιδανικά να είναι απενεργοποιημένη για να αποτραπούν τέτοιες παραβιάσεις ασφαλείας.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)