Publicznie dostępny wynik phpinfo()
Co to jest
Na stronie jest publicznie dostępny plik (najczęściej phpinfo.php lub info.php), który wywołuje funkcję phpinfo(). Wypisuje ona całą konfigurację PHP. Sprawdzamy, że odpowiedź naprawdę wygląda jak wynik phpinfo(), samo HTTP 200 nam nie wystarcza.
Dlaczego to problem
Wynik oszczędza atakującemu rozpoznanie:
- dokładna wersja PHP i lista załadowanych modułów, po których wybierze podatność,
- ścieżki na dysku i ustawienia serwera,
- zmienne środowiskowe, w których często są hasła do bazy lub klucze API, jeśli aplikacja dostaje je w ten sposób.
Nikt nie zakłada tego pliku celowo. Zostaje po debugowaniu albo instalacji.
Jak to naprawić
Usuń plik
Najprostsza i najlepsza naprawa. Jeśli nie wiesz, który to plik, przeszukaj kod:
grep -rl "phpinfo(" /var/www --include=*.phpGdy jest potrzebny
Uruchamiaj phpinfo() tylko z wiersza poleceń lub na lokalnej maszynie. Na produkcji można wyłączyć funkcję w php.ini:
disable_functions = phpinfoAlbo zablokować typowe nazwy na poziomie serwera (nginx):
location ~* /(phpinfo|info|test)\.php$ {
return 404;
}Jeśli wynik był publiczny
Zakładaj, że wszystko na stronie widzieli obcy. Wymień hasła i klucze, które pojawiały się w zmiennych środowiskowych.