mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
33 lines
2.5 KiB
Markdown
33 lines
2.5 KiB
Markdown
{{#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 `<path>\<pre><uuuu>.TMP`. Warto zauważyć:
|
|
|
|
- Domyślna ścieżka to zazwyczaj `C:\Windows\Temp`.
|
|
- Prefiks to zazwyczaj "php".
|
|
- `<uuuu>` 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}}
|