nginx est à la fois un serveur statique, une passerelle FastCGI et un reverse proxy, et ses mauvaises configurations se regroupent autour de chaque rôle. Identifiez-le via Server: nginx, ses pages d'erreur par défaut et le comportement location/proxy, puis déroulez cette checklist. La config nginx est copiée-collée en permanence, donc la même poignée d'erreurs se répète d'une cible à l'autre.
Ce qu'il faut vérifier#
- Off-by-slash d'
alias: unlocationsans slash final plus unaliasavec en concatène les caractères suivants (y compris..) sur le chemin cible, divulguant le répertoire parent. - Câblage FastCGI/PHP-FPM :
fastcgi_split_path_infopluscgi.fix_pathinfoexécutant des fichiers qui contiennent simplement.phpdans le chemin, et sockets FPM exposés. proxy_passvariable : un amont construit à partir de données de requête ($host, un argument) transforme le proxy en véhicule de SSRF.- Slash et normalisation :
merge_slashes off, gestion des slashes encodés, et correspondance de préfixelocationen désaccord avec le système de fichiers ou un amont.
Pages#
- Off-by-slash d'alias : la traversée
location/aliasvers le répertoire parent. - FastCGI et PHP-FPM : exécution d'upload via
fastcgi_split_path_info, exposition de FPM et contrôle deSCRIPT_FILENAME. - SSRF via proxy_pass variable : sélection d'amont influencée par l'utilisateur et routage interne.
- merge_slashes et normalisation : gestion des slashes et des préfixes qui contourne les règles basées sur
location.
Références#
- Documentation nginx : location, alias, fastcgi_split_path_info, proxy_pass, merge_slashes
- Orange Tsai : recherche nginx off-by-slash et parser