La liste du voleur
Chaque jour, des programmes demandent à Pyssly des fichiers qu’il n’a jamais eus : mots de passe, code source et sauvegardes. Voici la liste, combien de fois ils ont été demandés, pourquoi le voleur les veut et comment protéger ton propre site.

Qui est le voleur ?
Le voleur n’est presque jamais une personne qui cherche à la main. C’est un programme qui passe de site en site avec la même liste et réclame chaque fichier.
Si un site répond avec le fichier, le voleur a la clé, sans rien forcer du tout. Pyssly n’a aucun de ces fichiers, alors le voleur reçoit une fausse page et nous comptons la demande.
Tu as une page web, un site ou un serveur ? Fais en sorte que ces fichiers ne puissent pas être téléchargés. Tout en bas, tu vois comment vérifier.
Les plus recherchés
Voilà combien de fois des robots ont demandé ces fichiers à Pyssly.
On compte …
Mots de passe et clés
Le plus gros trésor : un seul fichier avec tout ce qui ouvre le site.
/.envOn compte …C’est quoi ? Un petit fichier texte où beaucoup de sites rangent leurs secrets : le mot de passe de la base de données, les clés des services de paiement et d’e-mail, et la clé qui protège les connexions. Aussi des variantes comme .env.production et env.js.
Pourquoi le voleur le veut ? Avec lui, le voleur peut se connecter à la base de données, envoyer des e-mails au nom du site ou utiliser les comptes du site chez d’autres services.
/config.jsonOn compte …C’est quoi ? Des fichiers de réglages : config.json, settings.py, web.config, docker-compose.yml, appsettings.json, credentials.json, le service-account.json d’un compte cloud et le terraform.tfvars de Terraform.
Pourquoi le voleur le veut ? Ils contiennent souvent les mêmes secrets que .env, et en plus l’endroit où se trouvent la base de données et les serveurs. Un service-account.json ou un fichier tfvars peut donner tout le compte cloud.
/id_rsaOn compte …C’est quoi ? Une clé SSH : la moitié secrète de la clé qui permet de se connecter à un serveur sans mot de passe.
Pourquoi le voleur le veut ? Celui qui a le fichier peut souvent se connecter tout de suite au serveur, comme le propriétaire lui-même.
/.htaccessOn compte …C’est quoi ? D’autres fichiers dont le nom commence par un point, comme .htaccess, .htpasswd, .DS_Store et .bash_history. Sur l’ordinateur, le point veut dire caché, mais pas sur le web.
Pourquoi le voleur le veut ? Ils montrent comment le serveur est réglé et quels fichiers existent, et parfois des mots de passe (.htpasswd) ou des commandes que quelqu’un a tapées.
Comment te protéger
- Ne mets jamais de secrets dans le dossier que le serveur web montre au public. Lis-les plutôt depuis des variables d’environnement ou un service de secrets (secrets Kubernetes, GitHub Actions ou le cloud).
- Bloque dans le serveur web tous les fichiers et dossiers dont le nom commence par un point, sauf /.well-known/. Plus bas, tu vois comment faire.
- Ne mets jamais de clé privée dans le dossier web, et garde tes propres clés de connexion pour toi, protégées par une phrase secrète.
Le code source
Tout le code du site, avec chaque modification faite un jour.
/.git/On compte …C’est quoi ? Le dossier où Git garde toute l’histoire d’un projet. S’il est sur le serveur, n’importe qui peut télécharger tout le code, fichier par fichier.
Pourquoi le voleur le veut ? Dans le code, le voleur cherche des mots de passe que quelqu’un a mis un jour puis retirés (ils restent dans l’historique), et des bugs à exploiter.
/.svn/On compte …C’est quoi ? La même chose pour les anciens outils de gestion de versions : Subversion (.svn), Mercurial (.hg), Bazaar et CVS.
Pourquoi le voleur le veut ? Comme pour .git : du code source et de vieux secrets.
Comment te protéger
- Ne mets jamais en ligne le dossier .git. Construis le site et envoie seulement le résultat, ou garde le dossier dehors avec un .dockerignore.
- Bloque les dossiers à point dans le serveur web, comme sécurité en plus.
- Si un mot de passe a un jour été dans le code : change-le. Le retirer dans une nouvelle modification ne suffit pas, il reste dans l’historique.
Bases de données et sauvegardes
Des copies que quelqu’un a posées sur le serveur pour un moment, puis oubliées.
*.sqlOn compte …C’est quoi ? Un export de base de données : toute la base dans un seul fichier, par exemple backup.sql ou db.sql.gz.
Pourquoi le voleur le veut ? Tout ce que le site sait s’y trouve : utilisateurs, adresses e-mail, mots de passe (hachés, on l’espère) et commandes. Une fuite de données d’un coup.
*.bakOn compte …C’est quoi ? Des sauvegardes et d’anciennes versions : .bak, .old, .orig, .swp, et des archives comme site.zip ou backup.tar.gz.
Pourquoi le voleur le veut ? Un wp-config.php.bak s’affiche comme du texte au lieu de s’exécuter, alors les mots de passe sont écrits en clair. Une archive zip peut être le site entier.
Comment te protéger
- Garde les sauvegardes hors du dossier web, de préférence sur une autre machine.
- Bloque .sql, .bak, .zip et les fichiers du même genre dans le serveur web.
- Ne modifie pas les fichiers directement sur le serveur : les éditeurs laissent des copies comme .swp et ~ derrière eux.
WordPress
WordPress fait tourner une grande partie du web, alors le voleur essaie toujours ses portes, même sur les sites qui n’ont pas WordPress, comme Pyssly.
/wp-login.phpOn compte …C’est quoi ? La page de connexion de WordPress.
Pourquoi le voleur le veut ? Le voleur essaie des noms d’utilisateur et des mots de passe courants, encore et encore, en espérant que l’un d’eux marche.
/wp-admin/On compte …C’est quoi ? Le dossier du panneau d’administration de WordPress, avec la page d’installation dedans.
Pourquoi le voleur le veut ? Une installation à moitié finie, le voleur peut la terminer lui-même et devenir admin. Sinon, c’est la même porte que la connexion.
/xmlrpc.phpOn compte …C’est quoi ? Une vieille interface de WordPress pour publier depuis d’autres programmes.
Pourquoi le voleur le veut ? Dans les vieilles versions, le voleur pouvait essayer des centaines de mots de passe en un seul appel. C’est encore une porte pour deviner des mots de passe, et les pingbacks peuvent pousser le site à envoyer du trafic vers d’autres sites.
/wp-content/On compte …C’est quoi ? Le dossier des extensions, des thèmes et des fichiers envoyés.
Pourquoi le voleur le veut ? Le voleur cherche de vieilles extensions aux failles connues, et des sauvegardes que des extensions ont laissées là.
/wp-includes/On compte …C’est quoi ? Les propres fichiers de programme de WordPress.
Pourquoi le voleur le veut ? Ils montrent quelle version le site utilise, donc quelles failles connues il pourrait avoir.
/wp-json/On compte …C’est quoi ? L’interface REST de WordPress.
Pourquoi le voleur le veut ? Elle peut lister les noms d’utilisateur du site, alors le voleur sait sur quels comptes essayer des mots de passe.
/wp-config.phpOn compte …C’est quoi ? Le fichier de réglages de WordPress, avec le mot de passe de la base de données et les clés secrètes du site.
Pourquoi le voleur le veut ? Si PHP tourne comme il faut, personne ne voit le contenu, mais une copie (wp-config.php.bak, wp-config.php~) ou un serveur en panne montre tout.
Comment te protéger
- Mets à jour WordPress, les thèmes et les extensions, et supprime les extensions que tu n’utilises pas.
- Active la connexion en deux étapes, et désactive xmlrpc.php si tu n’en as pas besoin.
- WordPress cherche aussi wp-config.php un dossier au-dessus de son installation. Déplace-le là seulement si ce dossier n’est pas lui-même servi sur le web, et n’en laisse jamais de copies.
Outils de base de données
Des programmes qui permettent de gérer la base de données depuis une page web.
/phpmyadmin/On compte …C’est quoi ? phpMyAdmin, un outil courant pour gérer les bases MySQL dans le navigateur.
Pourquoi le voleur le veut ? Si le voleur le trouve, il essaie des mots de passe, ou des failles connues dans les vieilles versions. S’il entre, il a toute la base de données.
/adminer.phpOn compte …C’est quoi ? Adminer, un outil du même genre dans un seul fichier, qu’on met souvent en ligne un instant et qu’on oublie.
Pourquoi le voleur le veut ? Comme phpMyAdmin : une connexion directe à la base de données.
Comment te protéger
- Ne mets pas d’outils de base de données sur le site public. Utilise-les sur ton propre ordinateur et joins la base par un tunnel SSH ou un VPN.
- S’ils doivent être là : verrouille-les derrière une connexion en plus ou une liste d’adresses autorisées.
Pages de débogage
Des pages que les développeurs utilisent pour regarder à l’intérieur d’un site pendant qu’il tourne. Super sur ton ordinateur, dangereuses sur le web.
/phpinfo.phpOn compte …C’est quoi ? Une page qui montre tous les réglages de PHP, y compris les variables d’environnement.
Pourquoi le voleur le veut ? On y trouve souvent des mots de passe et des clés, des chemins et les versions exactes : une carte du serveur.
/vendor/phpunit/On compte …C’est quoi ? Un outil de test pour PHP qui est parfois envoyé par erreur sur le serveur, dans le dossier vendor.
Pourquoi le voleur le veut ? Les vieilles versions ont une faille qui permet à n’importe qui d’exécuter son propre code sur le serveur.
/actuator/On compte …C’est quoi ? Les pages d’exploitation de Spring Boot pour les applis Java.
Pourquoi le voleur le veut ? Certaines montrent des variables d’environnement, des réglages ou un vidage de mémoire avec des mots de passe dedans.
/server-statusOn compte …C’est quoi ? La page d’état d’Apache, qui montre ce que fait le serveur en ce moment.
Pourquoi le voleur le veut ? Elle montre quelles adresses tous les visiteurs demandent, parfois avec des liens secrets et des clés dedans.
/_ignition/On compte …C’est quoi ? Ignition, la page de débogage de Laravel.
Pourquoi le voleur le veut ? Les vieilles versions ont une faille qui permet au voleur d’exécuter son propre code, et une page d’erreur montre souvent les réglages.
/_profiler/On compte …C’est quoi ? Le profileur de Symfony, qui garde chaque appel avec tout ce qu’il contenait.
Pourquoi le voleur le veut ? Il montre les connexions, les sessions et les réglages de chaque visite, y compris celles des autres.
Comment te protéger
- Ne fais jamais tourner un site en mode débogage sur le web : APP_DEBUG=false, et aucun environnement de développement en production.
- Supprime les fichiers phpinfo et les outils de test avant la mise en ligne (composer install --no-dev).
- Verrouille les pages d’exploitation comme Actuator et server-status à ta propre adresse ou à un réseau interne.
Vieilles portes
Des programmes et des pages que le serveur exécute quand quelqu’un les demande.
/cgi-bin/On compte …C’est quoi ? Un dossier pour de vieux scripts que le serveur exécute, souvent en Perl ou en shell.
Pourquoi le voleur le veut ? Les vieux scripts ont des failles connues, comme Shellshock, qui permettent au voleur d’exécuter des commandes sur le serveur.
/boaform/On compte …C’est quoi ? Les pages de réglages des routeurs et des caméras (boaform, HNAP1).
Pourquoi le voleur le veut ? Le voleur cherche des appareils à prendre en main grâce à de vieilles failles ou au mot de passe d’usine, pour les utiliser dans un botnet.
*.phpOn compte …C’est quoi ? N’importe quel fichier PHP, par exemple shell.php ou un fichier au nom bizarre.
Pourquoi le voleur le veut ? Souvent, le voleur cherche une porte dérobée (un web shell) que quelqu’un d’autre a déjà posée sur le site, pour le prendre en main.
*.aspOn compte …C’est quoi ? Des programmes dans d’autres langages que le serveur exécute : .asp, .aspx, .jsp et .cgi.
Pourquoi le voleur le veut ? Comme pour PHP : des failles connues dans les vieilles pages, ou une porte dérobée déjà en place.
Comment te protéger
- Supprime tout ce que le serveur n’a pas besoin d’exécuter : vieux scripts, pages de test et dossiers comme cgi-bin.
- Change le mot de passe d’usine des routeurs et des caméras, mets-les à jour, et n’expose jamais leurs pages de réglages sur internet.
- Ne laisse s’exécuter que ce qui doit s’exécuter : un fichier envoyé par un visiteur ne doit jamais pouvoir tourner comme du code.
Boutiques et sites d’hameçonnage
Deux sortes de recherches qui ne sont pas une effraction tout de suite, mais presque.
/cart.jsOn compte …C’est quoi ? Des fichiers que chaque boutique Shopify possède, comme cart.js et products.json.
Pourquoi le voleur le veut ? Grâce à eux, le programme trouve des boutiques et lit les articles et les prix, souvent pour les copier dans de fausses boutiques.
/lander/On compte …C’est quoi ? Les restes d’un kit d’hameçonnage : des pages de destination et des scripts qui imitent une banque ou un livreur de colis.
Pourquoi le voleur le veut ? Celui qui demande cherche des sites où quelqu’un a déjà mis un tel kit : des sites piratés à réutiliser.
Comment te protéger
- Ce qu’une boutique montre à tout le monde, tout le monde peut le lire. Ne mets rien de secret dans les articles ou les champs de produits.
- Si tu vois sur ton serveur un dossier ou un fichier que tu ne connais pas, comme lander/ : quelqu’un est peut-être entré. Supprime-le, change tous les mots de passe et mets tout à jour.
Bloquer dans le serveur web
La meilleure protection, c’est que ces fichiers ne soient jamais sur le serveur. Les blocages d’ici sont une sécurité en plus si quelque chose y arrive quand même.
Tous laissent /.well-known/ ouvert, parce qu’on en a besoin, par exemple pour les certificats. Essaie d’abord sur un site de test.
# First in the server block: nginx takes the first regex location that matches,
# and a location ^~ (such as /static/) skips them, so repeat these inside it.
# Dotfiles (.env, .git, .htaccess) at any depth, but not /.well-known/
location ~ /\.(?!well-known/) {
return 404;
}
# Databases, backups and old copies
location ~* \.(sql|bak|old|orig|swp|zip|tar|gz|7z)$ {
return 404;
}# Dotfiles (.env, .git, .htaccess) at any depth, but not /.well-known/
RedirectMatch 404 "/\.(?!well-known/)"
# Databases, backups and old copies
<FilesMatch "\.(sql|bak|old|orig|swp|zip|tar|gz|7z)$">
Require all denied
</FilesMatch># Dotfiles (.env, .git, .htaccess) at any depth, but not /.well-known/
@hidden {
path_regexp /\.
not path_regexp ^/\.well-known/([^./][^/]*/?)*$
}
respond @hidden 404
# Databases, backups and old copies, /.well-known/ included
@copies path_regexp \.(sql|bak|old|orig|swp|zip|tar|gz|7z)$
respond @copies 404**/.git
**/.env*
**/*.sql
**/*.bak
**/*.zip
**/id_*
**/*.tfvarsComment vérifier
Cinq minutes dans un terminal. Remplace example.com par ta propre adresse.
Vérifie seulement ton propre site. Chercher les fichiers des autres, c’est exactement ce que fait le voleur.
Demande .env
curl -sS -i https://example.com/.envRegarde la réponse et le contenu. 404 ou 403, c’est bien. Si tes réglages arrivent avec, le fichier est public. (Si le site répond 200 à tout, comme beaucoup d’applis, le contenu doit être ta page normale.)
Demande .git
curl -sS -i https://example.com/.git/HEADSi tu vois une ligne comme ref: refs/heads/main, tout le code source est exposé. Une page d’erreur ou ta page normale, c’est bien.
Essaie sous d’autres dossiers
curl -sS -i https://example.com/static/.envUn blocage peut manquer dans les dossiers servis directement, comme /static/ ou /assets/. Essaie là, et essaie d’autres fichiers de la liste, comme un .sql ou une vieille copie d’un fichier de réglages. Ce qui compte, c’est si le contenu s’affiche.
Regarde le journal
grep -E '\.env|\.git/|wp-login|phpinfo|\.sql' /var/log/nginx/access.logLes demandes arrivent chaque jour, alors qu’on les voie n’a rien d’étrange. Un 200 dans le journal ne prouve pas une fuite, car beaucoup d’applis répondent 200 avec leur page normale. Si tu vois un 200 pour .env ou .git/HEAD, récupère l’adresse comme plus haut et regarde le contenu.
Si un fichier est sorti
- Supprime le fichier et bloque l’adresse.
- Change chaque mot de passe et chaque clé qui s’y trouvait : la base de données, l’e-mail, les services de paiement et le compte cloud. Pars du principe que le voleur les a déjà.
- Regarde dans le journal qui a téléchargé le fichier, et si quelque chose est arrivé aux comptes depuis.
Plus sur les voleurs et les autres sortes de robots dans Comment marchent les robots.