Rappel théorique
Une mauvaise configuration de sécurité survient lorsqu'une application, un serveur web, un framework ou une base de données est déployé avec des paramètres par défaut, incomplets, ou trop permissifs. C'est l'une des causes les plus fréquentes de fuite d'informations facilitant d'autres attaques.
Exemples typiques
- Messages d'erreur détaillés (stack traces, chemins absolus, requêtes SQL) renvoyés aux utilisateurs.
phpinfo()ou des pages de diagnostic accessibles publiquement, révélant versions, extensions, variables d'environnement (parfois des secrets).- En-têtes HTTP révélant les versions exactes du serveur (
Server,X-Powered-By), facilitant la recherche de failles connues. - Comptes, fichiers ou répertoires d'exemple laissés en place après l'installation.
- Listing de répertoires activé (
Options +Indexes). - Permissions trop larges sur les fichiers, conteneurs ou buckets de stockage.
Conséquences
- Reconnaissance facilitée pour l'attaquant (versions, technologies, structure interne).
- Divulgation directe de secrets (clés, mots de passe de base de données).
- Exploitation de vulnérabilités connues correspondant aux versions exposées.
Mesures de protection
- Désactiver l'affichage des erreurs en production
(
display_errors = Off), tout en les journalisant (log_errors = On). - Retirer ou protéger les pages de diagnostic (
phpinfo(),/debug, etc.). - Masquer les bannières de version :
expose_php = Off(php.ini),ServerTokens ProdetServerSignature Off(Apache). - Désactiver le listing de répertoires (
Options -Indexes). - Supprimer les comptes, fichiers et configurations d'exemple par défaut.
- Mettre en place un processus de durcissement reproductible et des scans de configuration réguliers.
Démo vulnérable
Erreurs PHP affichées en clair (stack trace + chemins absolus) et extrait de
phpinfo() révélant les variables d'environnement de l'application,
y compris les identifiants de connexion à la base de données.
Démo sécurisée
Même scénario, mais les erreurs sont capturées et journalisées côté serveur ; un message générique est renvoyé à l'utilisateur et aucune information sensible n'est exposée. Inclut une checklist de durcissement.