disable_functions bypass - dl function

Support HackTricks

Σημαντική σημείωση:

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 για να εκτελέσει εντολές συστήματος.

Βήματα που ακολουθεί ο επιτιθέμενος:

  1. Αναγνώριση Έκδοσης PHP:

  • Ο επιτιθέμενος προσδιορίζει την έκδοση PHP χρησιμοποιώντας ένα σενάριο (<?php echo 'PHP Version is '.PHP_VERSION; ?>).

  1. Απόκτηση Πηγών PHP:

  1. Τοπική Ρύθμιση PHP:

  • Εξάγει και εγκαθιστά την συγκεκριμένη έκδοση PHP στο σύστημά του.

  1. Δημιουργία Επέκτασης:

Σημειώσεις για τη Συμπίεση της Προσαρμοσμένης Επέκτασης:

  1. ZEND_MODULE_API_NO:

  • Το ZEND_MODULE_API_NO στο bypass.c πρέπει να ταιριάζει με την τρέχουσα κατασκευή Zend Extension, που μπορεί να ανακτηθεί με:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. Τροποποίηση PHP_FUNCTION:

  • Για πρόσφατες εκδόσεις PHP (5, 7, 8), η PHP_FUNCTION(bypass_exec) μπορεί να χρειαστεί προσαρμογή. Το παρεχόμενο απόσπασμα κώδικα περιγράφει αυτή την τροποποίηση.

Αρχεία Προσαρμοσμένης Επέκτασης:

  • bypass.c:

  • Υλοποιεί τη βασική λειτουργικότητα της προσαρμοσμένης επέκτασης.

  • php_bypass.h:

  • Αρχείο κεφαλίδας, ορίζοντας τις ιδιότητες της επέκτασης.

  • config.m4:

  • Χρησιμοποιείται από το phpize για να ρυθμίσει το περιβάλλον κατασκευής για την προσαρμοσμένη επέκταση.

Κατασκευή της Επέκτασης:

  1. Εντολές Συμπίεσης:

  • Χρησιμοποιεί phpize, ./configure, και make για να συμπιέσει την επέκταση.

  • Το αποτέλεσμα bypass.so βρίσκεται στη συνέχεια στον υποκατάλογο modules.

  1. Καθαρισμός:

  • Εκτελεί make clean και phpize --clean μετά τη συμπίεση.

Ανέβασμα και Εκτέλεση στον Θύμα:

  1. Συμβατότητα Έκδοσης:

  • Διασφαλίζει ότι οι εκδόσεις API PHP ταιριάζουν μεταξύ των συστημάτων του επιτιθέμενου και του θύματος.

  1. Φόρτωση Επέκτασης:

  • Χρησιμοποιεί τη συνάρτηση dl, παρακάμπτοντας τους περιορισμούς χρησιμοποιώντας σχετικές διαδρομές ή ένα σενάριο για να αυτοματοποιήσει τη διαδικασία.

  1. Εκτέλεση Σεναρίου:

  • Ο επιτιθέμενος ανεβάζει το bypass.so και ένα σενάριο PHP στον διακομιστή του θύματος.

  • Το σενάριο χρησιμοποιεί τη συνάρτηση dl_local για να φορτώσει δυναμικά το bypass.so και στη συνέχεια καλεί τη bypass_exec με μια εντολή που περνά μέσω της παραμέτρου ερωτήματος cmd.

Εκτέλεση Εντολής:

  • Ο επιτιθέμενος μπορεί τώρα να εκτελέσει εντολές προσβάλλοντας: http://www.example.com/script.php?cmd=<command>

Αυτή η λεπτομερής περιγραφή περιγράφει τη διαδικασία δημιουργίας και ανάπτυξης μιας επέκτασης PHP για την εκτέλεση εντολών συστήματος, εκμεταλλευόμενη τη συνάρτηση dl, η οποία θα έπρεπε ιδανικά να είναι απενεργοποιημένη για να αποτραπούν τέτοιες παραβιάσεις ασφαλείας.

Support HackTricks

Last updated