4.8 KiB
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Sprawdź pełne szczegóły tej techniki na stronie https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
Przesyłanie plików w PHP
Gdy silnik PHP otrzymuje żądanie POST zawierające pliki sformatowane zgodnie z RFC 1867, generuje tymczasowe pliki do przechowywania przesłanych danych. Te pliki są kluczowe dla obsługi przesyłania plików w skryptach PHP. Funkcję move_uploaded_file
należy użyć do przeniesienia tych tymczasowych plików do żądanego miejsca, jeśli potrzebne jest trwałe przechowywanie poza wykonaniem skryptu. Po wykonaniu PHP automatycznie usuwa pozostałe tymczasowe pliki.
{% hint style="info" %} Ostrzeżenie dotyczące bezpieczeństwa: Atakujący, świadomi lokalizacji tymczasowych plików, mogą wykorzystać podatność na lokalne włączenie pliku (LFI), aby wykonać kod, uzyskując dostęp do pliku podczas przesyłania. {% endhint %}
Wyzwaniem dla nieautoryzowanego dostępu jest przewidzenie nazwy tymczasowego pliku, która jest celowo losowa.
Wykorzystanie w systemach Windows
W systemie Windows PHP generuje nazwy tymczasowych plików za pomocą funkcji GetTempFileName
, co daje wzór <ścieżka>\<pre><uuuu>.TMP
. Warto zauważyć:
- Domyślna ścieżka to zazwyczaj
C:\Windows\Temp
. - Prefiks to zazwyczaj "php".
<uuuu>
reprezentuje unikalną wartość szesnastkową. Istotne jest, że ze względu na ograniczenia funkcji, używane są tylko niższe 16 bitów, co pozwala na maksymalnie 65 535 unikalnych nazw przy stałej ścieżce i prefiksie, co umożliwia przeprowadzenie ataku brute force.
Ponadto, proces wykorzystania jest uproszczony w systemach Windows. Specyfika funkcji FindFirstFile
pozwala na użycie symboli wieloznacznych w ścieżkach lokalnego włączenia pliku (LFI). Pozwala to na stworzenie ścieżki dołączenia, takiej jak poniższa, w celu zlokalizowania tymczasowego pliku:
http://site/vuln.php?inc=c:\windows\temp\php<<
W pewnych sytuacjach może być konieczne użycie bardziej szczegółowej maski (np. php1<<
lub phpA<<
). Można systematycznie wypróbować te maski, aby odkryć wysłany tymczasowy plik.
Wykorzystanie w systemach GNU/Linux
W systemach GNU/Linux losowość w nazewnictwie tymczasowych plików jest solidna, co sprawia, że nazwy nie są przewidywalne ani podatne na ataki brute force. Szczegółowe informacje można znaleźć w dokumentacji odnośnej do tego tematu.
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć reklamę swojej firmy w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.