tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Σημαντική σημείωση:
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, που μπορεί να ανακτηθεί με:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Τροποποίηση 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
, η οποία θα έπρεπε ιδανικά να είναι απενεργοποιημένη για να αποτραπούν τέτοιες παραβιάσεις ασφαλείας.
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.