Contexte de la découverte

Le 17 octobre, l’équipe Amazon Threat Intelligence a repéré une campagne d’intrusion baptisée MadPot. Cette campagne utilise le web‑shell PHP2Shell, un script PHP permettant l’exécution de commandes à distance sur des serveurs web compromis. La détection a eu lieu avant toute annonce publique, ce qui a donné à AWS la possibilité d’avertir ses clients et de proposer des mesures de défense.

Fonctionnement du web‑shell PHP2Shell

PHP2Shell se présente sous la forme d’un fichier .php généralement uploadé via une vulnérabilité d’une application web (ex. injection de fichiers, mauvaise configuration de permissions). Une fois installé, le script exploite les fonctions natives de PHP telles que eval(), system() ou exec() pour exécuter des commandes système, télécharger ou téléverser des fichiers, et établir des connexions reverse vers l’infrastructure de l’attaquant. Le code source du shell inclut souvent un mécanisme d’obfuscation : les chaînes de caractères sont encodées en base64 puis décodées à la volée, ce qui complique l’analyse statique.

Analyse technique de la campagne MadPot

Les investigations d’AWS ont mis en évidence plusieurs indicateurs de compromission (IOCs) : adresses IP publiques utilisées pour les callbacks, domaines de commande‑et‑contrôle (C2) et hachages MD5 de fichiers PHP2Shell déployés. La campagne cible principalement des instances EC2 exécutant des stacks LAMP, où les permissions laxistes sur le répertoire /var/www/html facilitent l’upload du shell. Les logs CloudTrail et VPC Flow Logs ont montré des requêtes HTTP POST contenant des charges utiles encodées, suivies de connexions sortantes vers les serveurs C2 sur les ports 443 et 8080.

Implications et recommandations de mitigation

L’accès à un web‑shell donne à l’attaquant un point d’entrée persistant, capable de voler des données, de déployer des ransomwares ou de pivoter vers d’autres services AWS. Pour réduire le risque, AWS conseille :

1. Renforcer la surface d’attaque web : appliquer les correctifs de sécurité des CMS et des plugins, restreindre les permissions d’écriture sur les répertoires publics et désactiver les fonctions dangereuses de PHP (ex. allow_url_fopen, exec).

2. Activer la détection automatisée : configurer GuardDuty pour alerter sur les modèles de trafic anormaux, exploiter les règles de détection de CloudWatch Logs basées sur les signatures de PHP2Shell, et surveiller les flux VPC pour les connexions sortantes vers des IP non répertoriées.

3. Appliquer le principe du moindre privilège : limiter les rôles IAM associés aux instances EC2, désactiver les clés d’accès inutilisées et faire tourner régulièrement les secrets.

En diffusant ces informations avant la divulgation publique, Amazon a permis aux organisations de réagir rapidement, limitant ainsi l’exposition potentielle de leurs environnements cloud.