Veřejně dostupný výpis phpinfo()
Co to je
Na webu je veřejně dostupný soubor (nejčastěji phpinfo.php nebo info.php), který volá funkci phpinfo(). Ta vypíše celou konfiguraci PHP. Kontrolujeme, že odpověď opravdu vypadá jako výpis phpinfo(), nestačí nám samotné HTTP 200.
Proč je to problém
Výpis útočníkovi ušetří práci s průzkumem:
- přesná verze PHP a seznam načtených modulů, podle kterých si vybere zranitelnost,
- cesty na disku a nastavení serveru,
- proměnné prostředí, ve kterých bývají hesla k databázi nebo API klíče, pokud je tam aplikace předává.
Soubor nikdo nezakládá z úmyslu. Zůstane tam po ladění nebo po instalaci.
Jak to opravit
Soubor smažte
Nejjednodušší a nejlepší oprava. Pokud nevíte, který soubor to je, projděte kód:
grep -rl "phpinfo(" /var/www --include=*.phpKdyž ho potřebujete
Spouštějte phpinfo() jen z příkazové řádky nebo na lokálním stroji. Na produkci můžete funkci vypnout v php.ini:
disable_functions = phpinfoNebo zablokujte typické názvy na úrovni serveru (nginx):
location ~* /(phpinfo|info|test)\.php$ {
return 404;
}Pokud byl výpis veřejný
Považujte všechno, co ve výpisu bylo, za viditelné cizím lidem. Vyměňte hesla a klíče, které se objevovaly v proměnných prostředí.