LFI2RCE via phpinfo()
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)
Για να εκμεταλλευτείτε αυτήν την ευπάθεια χρειάζεστε: Μια ευπάθεια LFI, μια σελίδα όπου εμφανίζεται το phpinfo(), "file_uploads = on" και ο διακομιστής πρέπει να μπορεί να γράψει στον φάκελο "/tmp".
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Πρέπει να διορθώσετε την εκμετάλλευση (αλλάξτε => σε =>). Για να το κάνετε αυτό μπορείτε να κάνετε:
You have to change also the payload at the beginning of the exploit (for a php-rev-shell for example), the REQ1 (this should point to the phpinfo page and should have the padding included, i.e.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), and LFIREQ (this should point to the LFI vulnerability, i.e.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Check the double "%" when exploiting null char)
Αν οι αναφορές επιτρέπονται σε PHP και προσπαθήσετε να ανεβάσετε ένα αρχείο, αυτό το αρχείο αποθηκεύεται σε έναν προσωρινό φάκελο μέχρι να ολοκληρωθεί η επεξεργασία του αιτήματος από τον διακομιστή, στη συνέχεια αυτό το προσωρινό αρχείο διαγράφεται.
Στη συνέχεια, αν έχετε βρει μια ευπάθεια LFI στον διακομιστή ιστού μπορείτε να προσπαθήσετε να μαντέψετε το όνομα του προσωρινού αρχείου που δημιουργήθηκε και να εκμεταλλευτείτε μια RCE αποκτώντας πρόσβαση στο προσωρινό αρχείο πριν διαγραφεί.
Στα Windows τα αρχεία αποθηκεύονται συνήθως στο C:\Windows\temp\php
Στο linux το όνομα του αρχείου συνήθως είναι τυχαίο και βρίσκεται στο /tmp. Δεδομένου ότι το όνομα είναι τυχαίο, είναι απαραίτητο να εξάγετε από κάπου το όνομα του προσωρινού αρχείου και να αποκτήσετε πρόσβαση σε αυτό πριν διαγραφεί. Αυτό μπορεί να γίνει διαβάζοντας την τιμή της μεταβλητής $_FILES μέσα στο περιεχόμενο της συνάρτησης "phpconfig()".
phpinfo()
PHP χρησιμοποιεί ένα buffer 4096B και όταν είναι γεμάτο, αποστέλλεται στον πελάτη. Στη συνέχεια, ο πελάτης μπορεί να στείλει πολλές μεγάλες αιτήσεις (χρησιμοποιώντας μεγάλες κεφαλίδες) ανεβάζοντας ένα php reverse shell, περιμένοντας να επιστραφεί το πρώτο μέρος του phpinfo() (όπου είναι το όνομα του προσωρινού αρχείου) και να προσπαθήσει να αποκτήσει πρόσβαση στο προσωρινό αρχείο πριν ο διακομιστής php διαγράψει το αρχείο εκμεταλλευόμενος μια ευπάθεια LFI.
Python script to try to bruteforce the name (if length = 6)
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)