PHP-beveiliging uitgelegd · defensief
phpinfo()-blootstelling: waarom het telt en hoe je het oplost
phpinfo() toont de volledige PHP-configuratie. Handig bij het inrichten van een server, een cadeau voor aanvallers als het online blijft staan.
Laatst bijgewerkt
Wat het is
Volgens de PHP-handleiding toont phpinfo() veel informatie over de huidige staat van PHP, waaronder compileeropties, extensies, de PHP-versie, serverinformatie, omgeving en HTTP-headers. Op een live site kan dat databasehostnamen, API-sleutels in omgevingsvariabelen en interne paden omvatten. MITRE noemt dit CWE-200.
Zo vind je het
- Doorzoek de webroot op bestanden die
phpinfo(aanroepen en op namen alsinfo.php,phpinfo.phpentest.php. - Vraag die namen op bij je eigen sites en kijk of ze 200 teruggeven. Scan geen sites die niet van jou zijn.
- Controleer of de header
X-Powered-Byde PHP-versie toont; dat regeltexpose_php.
Zo los je het op
- Verwijder phpinfo-bestanden uit productie. Heb je de info nodig, gebruik dan
php -iop de server of een beveiligde tijdelijke pagina die je daarna weghaalt. - Voeg
phpinfotoe aandisable_functionsin php.ini als geen applicatie het nodig heeft. - Zet
expose_php = Offom de versie uit de responsheaders te halen. - Vervang elk geheim dat op een open phpinfo-pagina stond, want je weet niet wie het heeft gezien.
Alleen-lezen controles en veilige patronen
# Find leftover phpinfo() files (read-only)
grep -rln "phpinfo\s*(" --include=*.php /var/www 2>/dev/null | grep -v /vendor/
# Check your own site for common file names (only on hosts you own)
for f in phpinfo.php info.php test.php i.php; do
curl -s -o /dev/null -w "%{http_code} $f\n" "https://your-site.example/$f"
done
; php.ini: stop advertising the version and block the function
expose_php = Off
disable_functions = phpinfoIs een zichtbare PHP-versie echt een probleem?
Op zich geen kwetsbaarheid, maar het vertelt aanvallers of een server nog vóór 8.2.35, 8.3.36, 8.4.27 of 8.5.12 zit. Weghalen kost niets.
Het controlepaneel van mijn host toont phpinfo. Is dat open?
Niet als het achter de paneellogin zit. Het risico is een phpinfo-pagina die zonder inloggen bereikbaar is.
Andere PHP-kwetsbaarheidsklassen
- PHP object injection: wat het is en hoe je het oplostPHP object injection ontstaat wanneer door gebruikers beïnvloedbare invoer unserialize() bereikt, dat objecten kan aanmaken waarvan de magische methoden door de aanvaller gekozen logica uitvoeren.
- PHP file inclusion (LFI/RFI): wat het is en hoe je het oplostFile inclusion ontstaat wanneer gebruikersinvoer het pad voor include of require bepaalt, waardoor een aanvaller lokale bestanden leest (LFI) of, met allow_url_include aan, externe code uitvoert (RFI).
- SSRF in PHP: wat het is en hoe je het oplostServer-side request forgery (SSRF) ontstaat wanneer een PHP-app een door de gebruiker bepaalde URL ophaalt, waardoor een aanvaller via je server interne diensten of cloudmetadata-endpoints bereikt.
- XSS in PHP: wat het is en hoe je het voorkomtCross-site scripting (XSS) ontstaat wanneer een PHP-pagina door gebruikers beïnvloedbare data zonder escaping in HTML zet, zodat het script van een aanvaller in de browser van andere bezoekers draait.
Bronnen
Externe links verlaten deze site. Wij hosten geen exploitcode.
- phpinfo() — PHP Manual
- Core php.ini directives (open_basedir, expose_php) — PHP Manual
- CWE-200: Exposure of Sensitive Information to an Unauthorized Actor — MITRE CWE