{{#include ../../banners/hacktricks-training.md}} **Sprawdź pełne szczegóły tej techniki w [https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf)** ## **Przesyłanie plików PHP** Gdy silnik **PHP** otrzymuje **żądanie POST** zawierające pliki sformatowane zgodnie z RFC 1867, generuje pliki tymczasowe do przechowywania przesłanych danych. Pliki te są kluczowe dla obsługi przesyłania plików w skryptach PHP. Funkcja `move_uploaded_file` musi być użyta do przeniesienia tych plików tymczasowych do pożądanej lokalizacji, jeśli potrzebne jest trwałe przechowywanie poza wykonaniem skryptu. Po wykonaniu PHP automatycznie usuwa wszelkie pozostałe pliki tymczasowe. > [!NOTE] > **Alert bezpieczeństwa: Atakujący, świadomi lokalizacji plików tymczasowych, mogą wykorzystać lukę w Local File Inclusion, aby wykonać kod, uzyskując dostęp do pliku podczas przesyłania.** Wyzwanie związane z nieautoryzowanym dostępem polega na przewidywaniu nazwy pliku tymczasowego, która jest celowo losowa. #### Wykorzystanie na systemach Windows Na systemach Windows PHP generuje nazwy plików tymczasowych za pomocą funkcji `GetTempFileName`, co skutkuje wzorem takim jak `\
.TMP`. Warto zauważyć:

- Domyślna ścieżka to zazwyczaj `C:\Windows\Temp`.
- Prefiks to zazwyczaj "php".
- `` reprezentuje unikalną wartość szesnastkową. Kluczowe jest to, że z powodu ograniczenia funkcji używane są tylko dolne 16 bitów, co pozwala na maksymalnie 65,535 unikalnych nazw przy stałej ścieżce i prefiksie, co czyni brute force wykonalnym.

Ponadto proces wykorzystania jest uproszczony na systemach Windows. Ciekawostką w funkcji `FindFirstFile` jest możliwość używania symboli wieloznacznych w ścieżkach Local File Inclusion (LFI). Umożliwia to skonstruowanie ścieżki do dołączenia, takiej jak poniższa, aby zlokalizować plik tymczasowy:
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
W niektórych sytuacjach może być wymagana bardziej specyficzna maska (jak `php1<<` lub `phpA<<`). Można systematycznie próbować tych masek, aby odkryć przesłany plik tymczasowy.

#### Eksploatacja w systemach GNU/Linux

W systemach GNU/Linux losowość w nazewnictwie plików tymczasowych jest solidna, co sprawia, że nazwy są ani przewidywalne, ani podatne na ataki brute force. Dalsze szczegóły można znaleźć w odniesionej dokumentacji.

{{#include ../../banners/hacktricks-training.md}}