LFI2RCE via phpinfo()
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Erhalte die Perspektive eines Hackers auf deine Webanwendungen, Netzwerke und Cloud
Finde und melde kritische, ausnutzbare Schwachstellen mit echtem Geschäftsauswirkungen. Nutze unsere 20+ benutzerdefinierten Tools, um die Angriffsfläche zu kartieren, Sicherheitsprobleme zu finden, die dir ermöglichen, Privilegien zu eskalieren, und automatisierte Exploits zu verwenden, um wesentliche Beweise zu sammeln, wodurch deine harte Arbeit in überzeugende Berichte umgewandelt wird.
Um diese Schwachstelle auszunutzen, benötigst du: Eine LFI-Schwachstelle, eine Seite, auf der phpinfo() angezeigt wird, "file_uploads = on" und der Server muss in das Verzeichnis "/tmp" schreiben können.
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Du musst den Exploit reparieren (ändere => in =>). Dazu kannst du Folgendes tun:
Du musst auch die payload am Anfang des Exploits ändern (zum Beispiel für eine php-rev-shell), die REQ1 (dies sollte auf die phpinfo-Seite zeigen und das Padding enthalten, d.h.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), und LFIREQ (dies sollte auf die LFI-Schwachstelle zeigen, d.h.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Überprüfe das doppelte "%" beim Ausnutzen des Nullzeichens)
Wenn Uploads in PHP erlaubt sind und du versuchst, eine Datei hochzuladen, wird diese Datei in einem temporären Verzeichnis gespeichert, bis der Server die Anfrage verarbeitet hat, dann wird diese temporäre Datei gelöscht.
Wenn du eine LFI-Schwachstelle im Webserver gefunden hast, kannst du versuchen, den Namen der erstellten temporären Datei zu erraten und eine RCE auszunutzen, indem du auf die temporäre Datei zugreifst, bevor sie gelöscht wird.
In Windows werden die Dateien normalerweise in C:\Windows\temp\php gespeichert.
In Linux war der Name der Datei zufällig und befand sich in /tmp. Da der Name zufällig ist, ist es notwendig, den Namen der temporären Datei irgendwo zu extrahieren und darauf zuzugreifen, bevor sie gelöscht wird. Dies kann erreicht werden, indem der Wert der Variable $_FILES im Inhalt der Funktion "phpconfig()" gelesen wird.
phpinfo()
PHP verwendet einen Puffer von 4096B und wenn er voll ist, wird er an den Client gesendet. Dann kann der Client viele große Anfragen senden (unter Verwendung großer Header), eine php Reverse Shell hochladen, auf die erste Rückgabe von phpinfo() warten (wo der Name der temporären Datei steht) und versuchen, auf die Temp-Datei zuzugreifen, bevor der PHP-Server die Datei löscht, indem er eine LFI-Schwachstelle ausnutzt.
Python-Skript, um zu versuchen, den Namen zu bruteforcen (wenn die Länge = 6)
Erhalten Sie die Perspektive eines Hackers auf Ihre Webanwendungen, Ihr Netzwerk und die Cloud
Finden und melden Sie kritische, ausnutzbare Schwachstellen mit echtem Geschäftsauswirkungen. Verwenden Sie unsere 20+ benutzerdefinierten Tools, um die Angriffsfläche zu kartieren, Sicherheitsprobleme zu finden, die Ihnen ermöglichen, Berechtigungen zu eskalieren, und nutzen Sie automatisierte Exploits, um wesentliche Beweise zu sammeln, die Ihre harte Arbeit in überzeugende Berichte verwandeln.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)