📢 Tweet Teaser posted
296 chars
Avec lien Substack · Soir 18h30–20h · 30% du mix

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

📅 26/05 à 19h05 dans 2j
✓ Publié 26/05 à 19h05
🧵 Thread posted
1790 chars
Lien en dernier tweet seulement · Midi 12h–13h30
1/8

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/8

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/8

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/8

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/8

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/8

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/8

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/8

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

📅 01/09 à 12h04 dans 100j
✓ Publié 01/09 à 12h04
💡 Standalone #1 posted
255 chars
Sans lien · Matin 7h30–9h · 70% du mix

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.

📅 27/07 à 07h56 dans 64j
✓ Publié 27/07 à 07h56
💬 Standalone #2 posted
233 chars
Sans lien · Matin 7h30–9h · 70% du mix

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.

📅 03/09 à 08h02 dans 102j
✓ Publié 03/09 à 08h02
🔥 Provoc posted
240 chars
Sans lien · Valide avant de publier · Soir 18h30–20h

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.

📅 07/09 à 18h43 dans 106j
✓ Publié 07/09 à 18h43