Fichiers .env et .git sur le serveur : ce que cherchent les scanners
Des scanners automatiques cherchent sur les sites d’entreprise des fichiers .env, .git et des copies ZIP. Vérifiez votre site en 10 minutes et bloquez l’accès à ces fichiers.
Dans les journaux de mon serveur, je vois régulièrement des requêtes vers des adresses qui n’existent pas sur le site : /.env, /.git/config, /backup.zip, /phpinfo.php. Ce ne sont ni des clients ni des moteurs de recherche, mais des scanners automatiques. Ils interrogent les uns après les autres des milliers de sites d’entreprise et vérifient si quelqu’un a laissé sur le serveur un fichier contenant des mots de passe ou une copie de tout le site.
Si un tel fichier est accessible, un seul téléchargement suffit : le mot de passe de la base de données, la clé de la messagerie ou une copie des données clients se retrouve entre les mains d’un inconnu. Dans ce guide, je montre ce que cherchent les scanners, comment vérifier votre propre site en 10 minutes et comment bloquer ces fichiers.
Ce que cherchent les scanners
Les mêmes adresses reviennent dans les journaux de nombreux serveurs. Chacune correspond à un fichier qui reste parfois dans le répertoire du site après une mise en ligne ou une mise à jour.
| Adresse | Ce qu’on y trouve souvent | Conséquence d’une fuite |
|---|---|---|
/.env |
mots de passe de la base de données, clés API, identifiants d’envoi des e-mails | prise de contrôle de la base, spam envoyé depuis votre domaine, facture pour les requêtes API d’autrui |
/.git/ (par ex. /.git/config) |
l’historique du code du site | reconstitution du code, et avec lui des mots de passe des anciennes versions |
/backup.zip, /strona.zip, /old.tar.gz |
tout le site avec le fichier de configuration | tout à la fois : code, mots de passe, parfois données clients |
/dump.sql, /baza.sql |
une copie de la base de données | fuite des données clients, c’est-à-dire une violation de données personnelles |
/wp-config.php.bak, /wp-config.php.old |
une copie de la configuration de WordPress | le mot de passe de la base en clair |
/phpinfo.php, /info.php |
une description complète de la configuration du serveur | un indice pour l’attaquant : versions et chemins |
Différence importante : le serveur exécute le fichier wp-config.php comme un programme, son contenu n’est donc pas visible de l’extérieur. Une copie de ce fichier avec une autre extension (.bak, .old, .txt) devient en revanche un simple fichier texte, que le navigateur affichera ou téléchargera tout simplement.
Comment ces fichiers arrivent sur le serveur
Personne ne les laisse exprès. Je vois le plus souvent cinq scénarios :
- Mise en ligne par copie de tout le dossier du projet. Avec les fichiers du site, le répertoire caché
.gitet le fichier.envarrivent sur le serveur. - Une copie « temporaire » avant une mise à jour. Quelqu’un compresse le site dans
backup.zipdans le répertoire du site et oublie de supprimer l’archive. - Les copies de l’éditeur. L’éditeur laisse à côté du fichier modifié des fichiers se terminant par
~,.bakou.swp. - Une ancienne version du site dans un sous-répertoire. Après un changement de site, la version précédente atterrit dans
/old/ou/test/et continue de fonctionner, souvent sans mises à jour. - Des sauvegardes dans le répertoire public. Certains outils de sauvegarde enregistrent les archives à un endroit accessible depuis un navigateur.
Comment vérifier votre site en 10 minutes
Ne vérifiez que votre propre site ou un site dont vous vous occupez avec l’autorisation de son propriétaire.
Étape 1 : saisissez les adresses dans le navigateur. Remplacez votredomaine.pl par votre adresse et ouvrez-les une par une :
https://votredomaine.pl/.env
https://votredomaine.pl/.git/config
https://votredomaine.pl/.git/HEAD
https://votredomaine.pl/backup.zip
https://votredomaine.pl/phpinfo.php
Le bon résultat est une erreur 403 ou 404. Le mauvais résultat est l’affichage du contenu du fichier ou le début d’un téléchargement.
Étape 2 : passez en revue le répertoire du site. Connectez-vous au gestionnaire de fichiers du panneau d’hébergement (ou via FTP) et ouvrez le répertoire du site, généralement public_html ou www. Cherchez les fichiers se terminant par .zip, .sql, .tar.gz, .bak, .old et les répertoires old, test, kopia.
Étape 3 : vérifiez si la liste des fichiers des répertoires s’affiche. Ouvrez l’adresse d’un répertoire contenant des images, par ex. https://votredomaine.pl/wp-content/uploads/ sous WordPress. Si vous voyez une liste de fichiers au lieu d’une page vide ou d’une erreur, le serveur montre le contenu des répertoires à chaque visiteur.
Vous trouverez un examen plus large du site, au-delà de ces fichiers, dans le guide comment vérifier gratuitement le site d’une entreprise.
Que faire si un fichier est accessible
Si l’une des adresses a affiché un contenu, agissez dans cet ordre :
- Supprimez le fichier ou déplacez-le hors du répertoire du site. Les sauvegardes ne doivent pas se trouver à un endroit accessible depuis Internet.
- Considérez les mots de passe de ce fichier comme divulgués. Changez le mot de passe de la base de données, générez de nouvelles clés API et révoquez les anciennes, changez le mot de passe de la boîte e-mail utilisée par le site. Sous WordPress, générez aussi de nouvelles clés d’authentification et de nouveaux sels, ce qui déconnectera tous les utilisateurs connectés.
- Demandez les journaux à l’hébergeur. Demandez si quelqu’un a téléchargé cette adresse (réponse du serveur 200). Vous saurez ainsi si le fichier a fuité ou s’il est simplement resté là.
- Évaluez si des données personnelles ont fuité. Si la copie contenait une base avec des données clients, il peut s’agir d’une violation de données. L’article 33 du RGPD impose de notifier le président de l’UODO (Urząd Ochrony Danych Osobowych, l’autorité polonaise de protection des données) dans les meilleurs délais et, si possible, 72 heures au plus tard après en avoir pris connaissance, à moins que la violation ne soit pas susceptible d’engendrer un risque pour les droits et libertés des personnes physiques. Les informations et le formulaire se trouvent sur uodo.gov.pl.
Je décris le plan complet des premières 24 heures après la découverte d’un problème dans le guide faille sur un site d’entreprise : que faire dans les 24 premières heures.
Blocage dans la configuration du serveur
Supprimer les fichiers est la base, mais il vaut aussi la peine de bloquer définitivement ces adresses. Ainsi, un fichier téléversé par erreur ne sera pas accessible.
Apache (de nombreux hébergements mutualisés), fichier .htaccess dans le répertoire du site :
# Pas de liste des fichiers dans les répertoires
Options -Indexes
# Fichiers et répertoires commençant par un point (.env, .git), sauf .well-known
RedirectMatch 404 /\.(?!well-known)
# Copies et dumps qui ne devraient pas se trouver dans le répertoire du site
<FilesMatch "(\.(sql|bak|old|swp)|~)$">
Require all denied
</FilesMatch>
Trois remarques avant de coller ce code :
- Faites une copie de votre
.htaccessactuel et ouvrez le site juste après la modification. Certains hébergeurs n’autorisent pas la ligneOptions, et le site affiche alors une erreur 500. Supprimez cette ligne et demandez à l’hébergeur comment désactiver la liste des fichiers. Require all deniedfonctionne avec Apache 2.4, c’est-à-dire sur la grande majorité des serveurs actuels.- L’exception pour
.well-knownest nécessaire, car c’est notamment par là que passe le renouvellement du certificat SSL.
Nginx (serveurs VPS, la modification est faite par l’administrateur) :
location ~ /\.(?!well-known) {
deny all;
}
location ~* \.(sql|bak|old|swp)$ {
deny all;
}
Après la modification et la suppression des fichiers inutiles, refaites l’étape 1 de la vérification : toutes les adresses doivent renvoyer 403 ou 404.
Comment éviter cela à l’avenir
- Ne mettez sur le serveur que les fichiers du site, sans le répertoire
.git, les fichiers du projet et les notes. Les outils de déploiement disposent pour cela d’une liste d’exclusions. - Gardez
.envhors du répertoire public. Les frameworks comme Laravel ont un répertoirepublicdistinct, et lui seul doit être visible depuis Internet, tandis que le fichier.envse trouve un niveau au-dessus. - Conservez les sauvegardes hors du répertoire du site et hors du serveur. Je décris comment l’organiser dans le guide sur la sauvegarde de site web et la règle 3-2-1.
- Faites le ménage après chaque mise à jour : supprimez les fichiers de test, les archives et les anciennes versions du site.
- Refaites la vérification de ce guide une fois par trimestre. Cela prend 10 minutes, et les scanners ne font pas de pause.
En résumé
Les scanners cherchent des fichiers restés sur le serveur par accident, et ils le font automatiquement, quelle que soit la taille de l’entreprise. Vérifiez les cinq adresses de ce guide, supprimez les copies inutiles et ajoutez un blocage dans la configuration du serveur. Si vous préférez que quelqu’un s’en charge à votre place, je vérifierai le site et le serveur dans le cadre d’un audit de sécurité, et la maintenance technique assure une protection permanente. Vous pouvez aussi tout simplement m’écrire.
Questions fréquentes
Oui. Les scanners ne choisissent pas les entreprises : ils vérifient automatiquement des milliers d’adresses les unes après les autres. La taille du site ne compte pas. Ce qui compte, c’est la présence sur le serveur d’un fichier que l’on peut télécharger.
Non. Le fichier robots.txt est une demande adressée aux moteurs de recherche, et les scanners l’ignorent. Pire encore, y inscrire le chemin d’un fichier caché indique où le chercher.
Certains hébergeurs bloquent des fichiers précis, par exemple .htaccess, mais tous ne bloquent pas .env ou le répertoire .git, et les copies ZIP ne sont en général bloquées par personne. Le plus sûr est de le vérifier vous-même à l’aide de la liste de ce guide.
Oui. Vous ne savez pas si quelqu’un l’a téléchargé, et les données d’un tel fichier sont parfois utilisées bien plus tard. Changer les mots de passe et les clés prend en général une heure et clôt le sujet.
Services liés au sujet
Vous avez un projet similaire ?
Décrivez votre besoin et je vous envoie un devis sous 24 heures. Les nouveaux clients bénéficient de 20 % de réduction sur la première commande.


