LFI2RCE via phpinfo()
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Uzyskaj perspektywę hakera na swoje aplikacje webowe, sieć i chmurę
Znajdź i zgłoś krytyczne, wykorzystywalne luki w zabezpieczeniach, które mają rzeczywisty wpływ na biznes. Użyj naszych 20+ niestandardowych narzędzi, aby zmapować powierzchnię ataku, znaleźć problemy z bezpieczeństwem, które pozwalają na eskalację uprawnień, i użyj zautomatyzowanych exploitów, aby zebrać niezbędne dowody, przekształcając swoją ciężką pracę w przekonujące raporty.
Aby wykorzystać tę lukę, potrzebujesz: Luki LFI, strony, na której wyświetlana jest phpinfo(), "file_uploads = on" oraz serwer musi mieć możliwość zapisu w katalogu "/tmp".
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Musisz naprawić exploit (zmień => na =>). Aby to zrobić, możesz:
Musisz również zmienić payload na początku exploita (na przykład na php-rev-shell), REQ1 (to powinno wskazywać na stronę phpinfo i powinno zawierać padding, tzn.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), oraz LFIREQ (to powinno wskazywać na lukę LFI, tzn.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Sprawdź podwójne "%" podczas eksploatacji znaku null)
Jeśli przesyłanie plików jest dozwolone w PHP i próbujesz przesłać plik, ten plik jest przechowywany w tymczasowym katalogu, aż serwer zakończy przetwarzanie żądania, a następnie ten tymczasowy plik jest usuwany.
Jeśli znajdziesz lukę LFI w serwerze WWW, możesz spróbować odgadnąć nazwę utworzonego pliku tymczasowego i wykorzystać RCE, uzyskując dostęp do pliku tymczasowego, zanim zostanie on usunięty.
W Windows pliki są zazwyczaj przechowywane w C:\Windows\temp\php
W linux nazwa pliku zazwyczaj jest losowa i znajduje się w /tmp. Ponieważ nazwa jest losowa, konieczne jest wyodrębnienie skądś nazwy pliku tymczasowego i uzyskanie do niego dostępu, zanim zostanie usunięty. Można to zrobić, odczytując wartość zmiennej $_FILES wewnątrz treści funkcji "phpconfig()".
phpinfo()
PHP używa bufora o wielkości 4096B i gdy jest pełny, jest wysyłany do klienta. Następnie klient może wysłać dużo dużych żądań (używając dużych nagłówków) przesyłając php reverse shell, czekać na pierwszą część phpinfo() (gdzie znajduje się nazwa pliku tymczasowego) i spróbować uzyskać dostęp do pliku tymczasowego zanim serwer php usunie plik, eksploatując lukę LFI.
Skrypt Pythona do próby bruteforce nazwy (jeśli długość = 6)
Uzyskaj perspektywę hakera na swoje aplikacje internetowe, sieć i chmurę
Znajdź i zgłoś krytyczne, wykorzystywalne luki z rzeczywistym wpływem na biznes. Użyj naszych 20+ niestandardowych narzędzi, aby zmapować powierzchnię ataku, znaleźć problemy z bezpieczeństwem, które pozwalają na eskalację uprawnień, oraz użyj zautomatyzowanych exploitów do zbierania niezbędnych dowodów, przekształcając swoją ciężką pracę w przekonujące raporty.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)