tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Überprüfen Sie die vollständigen Details dieser Technik in https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
PHP-Datei-Uploads
Wenn eine PHP-Engine eine POST-Anfrage mit Dateien erhält, die gemäß RFC 1867 formatiert sind, erstellt sie temporäre Dateien, um die hochgeladenen Daten zu speichern. Diese Dateien sind entscheidend für die Handhabung von Datei-Uploads in PHP-Skripten. Die Funktion move_uploaded_file
muss verwendet werden, um diese temporären Dateien an einen gewünschten Ort zu verschieben, wenn eine dauerhafte Speicherung über die Ausführung des Skripts hinaus erforderlich ist. Nach der Ausführung löscht PHP automatisch alle verbleibenden temporären Dateien.
note
Sicherheitswarnung: Angreifer, die sich der Position der temporären Dateien bewusst sind, könnten eine Local File Inclusion-Schwachstelle ausnutzen, um Code auszuführen, indem sie auf die Datei während des Uploads zugreifen.
Die Herausforderung für unbefugten Zugriff besteht darin, den Namen der temporären Datei vorherzusagen, der absichtlich randomisiert ist.
Ausnutzung auf Windows-Systemen
Unter Windows generiert PHP temporäre Dateinamen mit der Funktion GetTempFileName
, was zu einem Muster wie <path>\<pre><uuuu>.TMP
führt. Bemerkenswert:
- Der Standardpfad ist typischerweise
C:\Windows\Temp
. - Das Präfix ist normalerweise "php".
- Das
<uuuu>
stellt einen einzigartigen hexadezimalen Wert dar. Entscheidend ist, dass aufgrund der Einschränkung der Funktion nur die unteren 16 Bits verwendet werden, was maximal 65.535 eindeutige Namen mit konstantem Pfad und Präfix ermöglicht, wodurch Brute-Force-Angriffe machbar werden.
Darüber hinaus wird der Ausnutzungsprozess auf Windows-Systemen vereinfacht. Eine Besonderheit in der Funktion FindFirstFile
erlaubt die Verwendung von Platzhaltern in Local File Inclusion (LFI)-Pfaden. Dies ermöglicht das Erstellen eines Include-Pfades wie folgt, um die temporäre Datei zu finden:
http://site/vuln.php?inc=c:\windows\temp\php<<
In bestimmten Situationen kann eine spezifischere Maske (wie php1<<
oder phpA<<
) erforderlich sein. Man kann systematisch diese Masken ausprobieren, um die hochgeladene temporäre Datei zu entdecken.
Ausnutzung auf GNU/Linux-Systemen
Für GNU/Linux-Systeme ist die Zufälligkeit bei der Benennung temporärer Dateien robust, wodurch die Namen weder vorhersehbar noch anfällig für Brute-Force-Angriffe sind. Weitere Details sind in der referenzierten Dokumentation zu finden.
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.