Arrêtez de laisser vos dossiers ouverts sur Internet
ump — Un mot de passe pourri backfill 2025-12-09 · Voir sur Substack ↗
Un dossier .git/, un backup.zip oublié, un .env exposé : c'est tout ce qu'il faut pour cartographier ton infra et trouver les secrets. L'énumération web n'est pas du folklore, c'est l'étape 0 de 90 % des attaques. https://unmotdepassepourri.substack.com/p/arretez-de-laisser-vos-dossiers-ouverts
1/ L'énumération web, c'est le mouvement 1 de presque toutes les attaques : fuzzing de paths, devinette de fichiers, Google Dorks. Si ton serveur répond différemment selon qu'un chemin existe ou pas, tu facilites le boulot de l'attaquant.
2/ Un .git/ exposé = historique Git complet. Un .env oublié = clés API, tokens, DSN en clair. Un backup.zip indexé par Google = dump SQL accessible à tous. Ce ne sont pas des erreurs rares : je vois ça toutes les semaines en pentest.
3/ La défense tient en 4 axes : réduire la surface (rien de sensible dans webroot), uniformiser les réponses (404 partout), limiter la cadence (rate-limit), observer (logs de 404 en rafale).
4/ Hygiène de base : aucun .git, .svn, .env, backup dans la racine web. Séparer /app (code), /data (stockage), /backup (hors du périmètre HTTP). Variables d'environnement dans un gestionnaire de secrets (Vault, AWS Secrets Manager), jamais en fichier.
5/ Apache & Nginx : désactive l'indexation (Options -Indexes, autoindex off), bloque les dotfiles, les VCS, les backups (.env, .sql, .zip, .tar). Renvoie 404 uniforme pour tout ce qui n'existe pas ou est interdit. Préserve juste /.well-known/acme-challenge/ pour Let's Encrypt.
6/ Casse les oracles : même taille de réponse 404, même délai, même code HTTP pour 403 vs 404. Si ta page 404 fait 512 octets et ta 403 en fait 4 Ko, l'attaquant sait qu'il tape juste.
7/ Rate-limiting et monitoring : une rafale de 404 sur des paths suspects (.git/config, .env, backup.sql) doit déclencher une alerte. Le fuzzing n'est pas silencieux si tu regardes tes logs.
8/ Snippets complets (Apache, Nginx) et checklist dans l'article. Zéro excuse pour laisser trainer .git/ ou composer.json en 2025. https://unmotdepassepourri.substack.com/p/arretez-de-laisser-vos-dossiers-ouverts
J'ai vu une boîte se faire compromettre parce qu'un .git/config exposé contenait l'URL d'un repo GitLab interne avec token. L'attaquant a cloné tout le code, trouvé des endpoints d'admin non doc, et enchaîné en 48h. Tout partait d'un 403 au lieu d'un 404.
Si ton serveur répond différemment à /admin (403) vs /zxcvqsdf (404), tu viens de confirmer qu'un path /admin existe. L'attaquant va fuzzer dessus. Uniformiser les réponses, c'est pas du folklore, c'est casser l'oracle de découverte.
Les pentesters adorent les devs qui laissent .git/ en prod : on récupère l'historique Git complet, les secrets committés puis supprimés, les endpoints internes commentés. Merci de faciliter le boulot, ça nous fait gagner 2 jours de mission.