Webshell WordPress (WSO, FilesMan, c99) : le reconnaître et le supprimer
Un fichier PHP qui affiche un gestionnaire de fichiers dans le navigateur ? C'est un webshell. Voici comment reconnaître WSO, FilesMan ou c99 et les retirer proprement.
Vous avez trouvé un fichier PHP qui, ouvert dans le navigateur, affiche un gestionnaire de fichiers ou une console — souvent avec un titre comme « WSO », « FilesMan » ou « c99 ». C’est un webshell : l’un des outils les plus dangereux qu’un attaquant puisse laisser sur votre serveur. Il faut le retirer en urgence et traiter le site comme entièrement compromis.
Qu’est-ce qu’un webshell ?
Un webshell est un fichier PHP malveillant qui donne à l’attaquant une interface d’administration du serveur directement depuis le navigateur. Contrairement à une backdoor minimaliste, un webshell est un outil complet : il permet de parcourir, lire, modifier et supprimer tous les fichiers, d’exécuter des commandes système, d’accéder à la base de données, et souvent d’envoyer des mails en masse. WSO (« Web Shell by Orb »), FilesMan, c99, r57, b374k ou IndoXploit sont des noms de familles de webshells largement répandues.
Le webshell est en général le premier outil posé après une intrusion : c’est depuis lui que le pirate installe ensuite les backdoors, injecte le spam et met en place les redirections.
Les symptômes
- Un fichier
.phpinconnu qui affiche une interface de gestion de fichiers dans le navigateur. - Des fichiers ou pages qui apparaissent et disparaissent sans votre intervention.
- Une activité serveur anormale : envois de mails, pics de CPU, connexions inhabituelles.
- D’autres signes de compromission qui suivent : spam indexé, compte admin inconnu, redirections.
Où le webshell se cache
- Dans
wp-content/uploads/, sous un nom aléatoire ou déguisé (.phpglissé parmi des images). - À la racine ou dans
wp-includes/, avec un nom proche d’un fichier du cœur. - Dans
wp-content/mu-plugins/, exécuté automatiquement. - Parfois déguisé : extension
.txt,.icoou double extension, appelé par un autre fichier.
Comment vérifier si vous êtes infecté
En SSH, cherchez les noms de familles connus et le PHP hors périmètre :
grep -rEl "FilesMan|c99|r57|b374k|WSOshell|IndoXploit" . --include=*.php
find wp-content/uploads -name '*.php'
grep -rEl "\\\$_(POST|REQUEST|GET|COOKIE)\[" wp-content/ --include=*.php
Le scan gratuit WP-Detox repère à distance les webshells connus et les fichiers PHP déposés hors des emplacements légitimes, y compris ceux déguisés.
Le supprimer proprement
Un webshell signifie que l’attaquant a eu un accès complet : on ne « répare » pas, on remplace.
- Sauvegardez l’état actuel pour analyse.
- Supprimez le webshell et tout
.phpnon légitime dansuploadsetmu-plugins. - Réinstallez le cœur, les plugins et les thèmes depuis leurs sources officielles — voir réinstaller le cœur de WordPress et supprimer une backdoor.
- Cherchez les backdoors compagnons : un webshell en installe presque toujours.
- Régénérez tous les accès (admin, base, FTP, hébergeur, clés de salage) : l’attaquant a probablement récupéré des identifiants.
- Bloquez l’exécution de PHP dans
uploadsau niveau du serveur pour empêcher un nouveau dépôt.
Comment il revient (persistance)
Le webshell sert à installer une persistance ailleurs : backdoors dans le cœur, cron qui recrée des fichiers, compte admin caché. Supprimer le seul webshell laisse tout ce dispositif en place, prêt à en redéposer un. C’est pourquoi la présence d’un webshell impose un nettoyage complet — remplacement des fichiers, chasse aux backdoors et régénération des accès — et non une simple suppression.
FAQ
Un webshell peut-il faire plus que gérer des fichiers ? Oui, et c’est le problème. Un webshell comme WSO donne un accès quasi complet au serveur : parcourir et modifier tous les fichiers, exécuter des commandes système, se connecter à la base, envoyer des mails de spam. C’est l’un des outils les plus dangereux qu’un pirate puisse laisser.
Le webshell est protégé par un mot de passe, ça limite les dégâts ? Non. Beaucoup de webshells sont protégés par un mot de passe pour empêcher les autres pirates de les utiliser, pas pour vous protéger. Le propriétaire du shell garde un accès total. Sa présence est une urgence, protégé ou non.
Comment un webshell arrive-t-il sur un site WordPress ? Le plus souvent par un formulaire d’upload non filtré, un plugin vulnérable qui permet d’écrire un fichier, ou des identifiants FTP/admin volés. Une fois en place, le webshell sert à installer tout le reste : backdoors, spam, redirections.
Chez WP-Detox, la présence d’un webshell déclenche un nettoyage complet : remplacement des fichiers, chasse aux backdoors et régénération de tous les accès. Le scan est gratuit, le nettoyage prend environ 30 minutes, c’est 149 € HT et remboursé si le site n’est pas propre. Pour la marche complète, voyez le guide pour nettoyer un WordPress piraté.