Web Shells: How Attackers Use Them and How to Detect Them
Table des matières
Exploits targeting internet-facing web applications were the leading initial access vector for the sixth consecutive year in 2025, according to Mandiant’s M-Trends 2026 report. Web shells are central to how those exploits are sustained — threat groups deployed them in 35% of incidents in Q4 2024, more than triple the rate of the previous quarter. Once planted on a compromised web server, a web shell gives attackers long-term persistence, the ability to move laterally, and direct access to sensitive data — all without triggering the alerts that conventional malware would generate.
In 2025, the median time between initial compromise and attacker hand-off collapsed to 22 seconds. Web shells are a key enabler of that speed — they allow threat actors to maintain silent access while a second group takes over for ransomware deployment or data exfiltration. Let’s dissect a classic PHP web shell to show how it works in practice, and why these scripts remain so effective at turning a single unpatched vulnerability into a lasting breach.
Pourquoi les web shells sont importants
Un shell web est un petit script (généralement écrit en PHP, ASP ou JSP) que les attaquants téléchargent sur une application web vulnérable.
Considérez un web shell comme un panneau de contrôle caché. Une fois installé, il permet aux pirates d'exécuter des commandes, de parcourir des fichiers et de prendre le contrôle du serveur depuis leur navigateur. Ce qui commence comme une seule faille dans une application web peut rapidement devenir une porte dérobée permanente.
Selon le CISA, les web shells peuvent fonctionner sur les plateformes Linux, Microsoft Windows, macOS et réseau.
Les attaquants plantent généralement des scripts web shell par le biais de :
- Exécutions de code à distance dans les applications web publiques
- Formulaires de téléchargement de fichiers mal sécurisés
- Les failles d'inclusion de fichiers distants ou locaux (RFI/LFI)
- Plugins ou thèmes obsolètes pour CMS, comme dans WordPress
Au fil des années, certains shells sont devenus tristement célèbres :
- C99 shell web: Un shell PHP riche en fonctionnalités avec des outils de gestion de fichiers, d'exécution de commandes et de bases de données
- webshell China Chopper : Une minuscule mais puissante web shell souvent utilisée pour la persistance furtive
- R57 et WSO web shells : Web shells plus anciens mais toujours actifs avec des fonctionnalités de base de fichiers et de commandes
- Shell web B374K : Un web shell PHP qui peut visualiser les processus et exécuter des commandes
Examinons quelques-unes de ces web shells en action.

Études de cas : Incidents réels de web shells
Avant de décomposer leurs composants, examinons quelques exemples concrets des dégâts que les web shells peuvent causer. Ils ont représenté 35% d'incidents de cyberattaques au T4 2024, ce qui en fait un script malveillant majeur à surveiller.
- Avril 2025 : Selon le The Hacker News, bogue critique permettant aux attaquants de téléverser des web shells JSP, puis d'utiliser des outils comme Brute Ratel pour escalader et voler des données. Les analyses ont trouvé des centaines de serveurs vulnérables exposés en ligne.
- Juillet 2023 : CISA ont signalé que des acteurs malveillants ont exploité la faille Citrix NetScaler/ADC (CVE-2023-3519) pour déposer des web shells (souvent JSP), obtenir une exécution de commandes à distance et une persistance, et se déplacer latéralement.
- juin 2022 : MITRE ATT&CK documenté comment un web shell a été déployé lors de l'attaque contre le réseau électrique ukrainien, exécutée par un groupe de menaces ayant des liens avec la Russie.
En bref, les web shells peuvent rapidement transformer n'importe quelle application vulnérable en un serveur web compromis, avec des conséquences dévastatrices.
C99 : une analyse de webshell
C99 est un exemple classique de webshell PHP qui rassemble de nombreuses fonctionnalités dans un seul script, notamment :
- Gestionnaire de fichiers
- Télécharger/ téléverser
- Exécution de commande
- Aide de la base de données
- Option de suppression automatique
C99 démontre clairement le flux de travail complet de l'attaquant : un adversaire dépose un minuscule fichier PHP via un téléchargement vulnérable ou une exécution de code à distance, puis utilise ce même script pour naviguer sur la racine du web, exécuter des commandes système, extraire les informations d'identification et outils de scène supplémentaires.
Décomposons ce à quoi peut ressembler le webshell C99 plus en détail.

Figure 2 : Informations sur le code du webshell C99 sur GitHub. (Source : GitHub)
1. Navigation dans le système de fichiers
- Ce que cela fait : la navigation dans le système de fichiers permet à un attaquant de lister des dossiers, d'ouvrir des fichiers et de lire leur contenu. Ils pourraient utiliser des fonctions telles que
scandir()ouopendir()pour voir ce qu'il y a sur le serveur,file_get_contents()lire des fichiers, etfile_put_contents()pour déposer ou mettre à jour des fichiers. - Pourquoi c'est important : Voici comment les pirates peuvent trouver des fichiers de configuration, des clés d'API, des sauvegardes et d'autres données sensibles, et où ils préparent des charges utiles supplémentaires.
- À surveiller : Requêtes frappant à plusieurs reprises le même chemin PHP qui renvoient des listes de répertoires. Vérifiez également les fichiers nouveaux ou récemment modifiés dans le webroot (horodatages étranges), ainsi que les lectures soudaines de fichiers de configuration ou les téléchargements importants initiés depuis le serveur web.
L'extrait ci-dessous est un exemple simplifié pour montrer le comportement, bien que les implémentations exactes et les noms de fonctions varient selon les variantes.

Figure 3 : Exemple de navigation dans le système de fichiers en langage de programmation PHP.
2. Téléchargement/téléversement de fichiers
- Ce que cela fait : Les shells C99 incluent souvent un formulaire de téléchargement de fichiers afin qu'un attaquant puisse déposer des outils supplémentaires (logiciels malveillants, scanners ou charges utiles volumineuses) sur le serveur. Ils permettent également aux attaquants de télécharger des fichiers depuis le serveur. Les mécanismes de téléchargement courants sont
move_uploaded_file()(téléversements de fichiers de navigateur standards), des gestionnaires qui acceptent les corps POST bruts, ou des champs POST contenant des fichiers encodés en base64. - Pourquoi c'est important : Un attaquant utilise les téléchargements pour préparer d'autres actions logiciels malveillants ou remplacer des fichiers d'application. Les téléchargements leur permettent d'extraire des fichiers de configuration ou des dumps de base de données de votre environnement, le tout via le processus du serveur web.
- À surveiller : Surveillez les requêtes POST volumineuses ou inhabituelles vers le même point de terminaison PHP (en particulier celles contenant de longues chaînes base64) suivies de l'apparition de fichiers nouveaux ou nommés de manière étrange dans des dossiers accessibles via le Web ou de pics de trafic sortant.

3. Exécution de commandes/Accès à distance
- Ce que cela fait : C99 donne à un attaquant un mini terminal web. Ils peuvent envoyer une commande via l'interface web ou une requête POST et obtenir la sortie de la commande dans le navigateur.
- Pourquoi c'est important : C'est ainsi que les attaquants font apparaître des shells inversés, exécutent des scripts d'escalade de privilèges ou lancent d'autres outils à partir du serveur web.
- À surveiller : Surveillez l'apparition de processus shell par les processus web ou les connexions sortantes inattendues immédiatement après des requêtes à un point d'accès PHP unique.

4. Connexions à la base de données et extraction des données
- Ce que cela fait : Les shells de style C99 incluent souvent des outils rapides pour lire les fichiers de configuration (où les applications stockent les identifiants de base de données) et exécuter des requêtes SQL en utilisant ces identifiants. Cela permet à un attaquant de déverser des tables d'utilisateurs, de voler des clés d'API ou d'écrire de nouveaux enregistrements pour assurer la persistance.
- Pourquoi c'est important : Avec un accès à la base de données, un attaquant peut exfiltrer des données clients, prendre le contrôle de comptes, ou Utiliser les mêmes identifiants pour accéder à d'autres services, multipliant ainsi l'impact de la violation.
- À surveiller : Méfiez-vous des lectures inattendues des fichiers de configuration ainsi que des connexions/requêtes inhabituelles à la base de données provenant du processus du serveur web.

5. Obfuscation et anti-informatique légale
Les variantes C99 cachent parfois des chaînes de caractères ou une logique en utilisant base64_decode(), gzinflate() ou évaluer() Les wrappers, et peuvent compresser ou diviser des charges utiles pour éviter la détection par signature simple. Ils peuvent également s'auto-supprimer après utilisation. Ces astuces permettent aux analyseurs basés sur les signatures et aux revues manuelles rapides de manquer l'implant.
Comment les attaquants livrent les web shells
Maintenant que nous avons vu le fonctionnement interne d'un système d'exploitation web shell, explorons comment les pirates parviennent à les introduire dans un système compromis en premier lieu.
- Exécution de code à distance (RCE) exploitée dans une application publique : L'attaquant exécute du code sur votre serveur
- Des points d'accès de téléchargement de fichiers non sécurisés ou des autorisations mal configurées qui permettent aux attaquants de déposer des fichiers
- Chaînes d'inclusion de fichiers distants (RFI) ou d'inclusion de fichiers locaux (LFI) qui permettent à un attaquant de forcer le serveur à écrire ou exécuter un fichier distant
- Plugins ou thèmes compromis, identifiants d'administrateur volés, ou hameçonnage qui donne accès aux panneaux d'administration (courant dans WordPress)
Checklist : Comment attraper un shell web
Voici une liste de contrôle claire que vous pouvez utiliser lors des recherches ou du triage. Chaque élément représente un endroit où chercher et ce qu'il signifie généralement.
- Nouveaux fichiers PHP aux noms étranges dans les dossiers web : Vérifiez les fichiers qui n'étaient pas là auparavant, ont des noms étranges (chaînes aléatoires) ou des horodatages qui ne correspondent pas à votre dernier déploiement.
- Connexions sortantes inattendues du serveur web : Des connexions répétées et périodiques à des adresses IP inconnues peuvent servir de balise pour le contrôle et la commande.
- Webserver lançant de nouveaux processus ou exécutant des commandes shell : Si votre processus web se duplique soudainement
salut,bash, ou d'autres binaires inattendus, traitez-le comme une priorité élevée. - Modifications apportées aux fichiers de base du CMS, aux plugins ou à des comptes administrateur inconnus : Rechercher les fichiers du cœur modifiés, les nouveaux utilisateurs administrateurs, ou les fichiers de plugins qui ne correspondent pas aux sommes de contrôle du fournisseur.
- Requêtes POST inhabituelles avec de longs corps ou des données de type base64 : Les requêtes POST volumineuses ou fréquentes vers le même point de terminaison PHP (en particulier avec de longues chaînes encodées) indiquent souvent des téléchargements ou des écritures à distance.
Vous pouvez également bénéficier d'outils de surveillance.
Par exemple, vous pouvez utiliser la surveillance de l'intégrité des fichiers pour détecter les fichiers webroot nouveaux ou modifiés, les pare-feu d'applications Web (WAF) et les journaux de serveurs Web pour les requêtes POST étranges, les alertes EDR lorsque le processus Web lance des shells ou écrit des binaires, et les systèmes IDS/IPS réseau pour la balise ou les sorties imprévues. Combinez ces flux et vous détecterez les implants plus rapidement.
CybelAngel peut compléter ce processus. Elle peut gérer vos actifs publics et exposés sur Internet (qui contiennent souvent les données les plus sensibles) et signaler tout problème avant qu'il ne se transforme en une violation complète.

7 mesures tactiques de cybersécurité pour les RSSI
Voici quelques correctifs qui RSSI devrait donner la priorité à la lutte contre les web shells.
- Mettre à jour les applications et les plugins exposés au public : Appliquez rapidement les correctifs des fournisseurs et automatisez les mises à jour lorsque cela est sûr.
- Points de terminaison de chargement Harden : Valider les types de fichiers, supprimer les métadonnées, rejeter les exécutables et stocker les téléversements en dehors du webroot.
- Ajustez votre WAF pour les requêtes POST suspectes : Bloquer ou contester les corps de requêtes POST volumineux/encodés et les signatures de web-shells connues.
- Exécuter des vérifications d'intégrité des fichiers sur la racine web : Hacher régulièrement le contenu et alerter sur les fichiers PHP nouveaux ou modifiés.
- Verrouille les sorties des serveurs web : Autoriser les destinations sortantes et bloquer les ports sortants inattendus.
- Améliorer l'hygiène des identifiants : Faites pivoter les secrets, appliquez l'authentification multifacteur sur les panneaux d'administration et alertez sur les nouveaux comptes/comptes privilégiés.
- Utiliser les renseignements sur les menaces externes pour prioriser la remédiation : Cartographiez les applications exposées, concentrez la correction sur les actifs à haut risque en premier, avec des outils comme CybelAngel pour automatiser le processus.
FAQ
Un web shell est un petit script qu'un attaquant dépose sur un site web. Une fois qu'il est en place, vous pouvez contrôler le serveur depuis un navigateur (exécuter des commandes, lire des fichiers, téléverser des outils ou extraire des données) via des requêtes web normales.
Explorateur de fichiers (lister et lire des fichiers).
Capacité de téléchargement/téléversement
Exécuter des commandes système (un petit terminal web)
Outils SQL simples pour les bases de données
Une interface utilisateur web ou une porte dérobée protégée par mot de passe
Obfuscation ou options d'auto-suppression pour masquer les traces
Ils utilisent des faiblesses comme un bogue de code à distance, un formulaire de téléversement de fichier non sécurisé, une chaîne RFI/LFI, ou un plugin/identifiant compromis. Souvent, un scanner trouve la faille, puis un opérateur téléverse le shell et teste l'accès.
Fichiers PHP nouveaux ou nommés de manière étrange dans les dossiers web
Les POST longs ou inhabituels (grands corps ou données base64)
Connexions sortantes répétées depuis le serveur web (balises/C2)
Serveur web générant des processus ou des commandes shell inattendus
Fichiers du cœur de CMS modifiés ou comptes administrateur inconnus
Patch web apps and plugins, lock down file uploads and store them outside the webroot, tune your WAF, run file-integrity checks and egress controls, and enforce strong credential hygiene (MFA, rotate secrets). Use external-asset mapping tools like CybelAngel to prioritise the exposed apps that matter most.
They give attackers long-term access without needing new exploits. From one small script they can steal data, install more logiciels malveillants, and move through your network. And they’re often hard to spot until real damage is done.
Conclusion
Web shells are not sophisticated. That’s exactly what makes them dangerous. A few hundred lines of PHP, uploaded through a single unpatched vulnerability, can give an attacker persistent access to your environment for weeks or months, long after the original flaw is fixed.
Mandiant’s 2026 data confirms the pattern: exploits remain the number one initial access vector, and internet-facing web application servers are the primary target. Web shells are the bridge between initial exploitation and everything that follows — lateral movement, credential theft, ransomware deployment.
The organisations that detect web shells early share one capability: continuous visibility into their external attack surface. They know which internet-facing applications are running, which are unpatched, and they receive alerts when unexpected files appear on web servers. CybelAngel’s attack surface management maps your internet-facing assets continuously, identifying exposed and vulnerable applications before attackers can plant a foothold.
