
Laboratoire pratique reproduisant la RCE CVE-2019-11043 PHP-FPM derrière nginx, démontrant la persistance par tunnel inversé, la forensique mémoire et l'analyse du trafic réseau.
En octobre 2019, les chercheurs Emil Lerner et Andrew Danau, à l’origine de l’avis de sécurité Debian, ont publié un avertissement signalant à la communauté Debian une vulnérabilité critique dans PHP-FPM. En raison d’une validation insuffisante dans le code de gestion des chemins de PHP-FPM, des attaquants pouvaient manipuler des requêtes spécialement conçues pour obtenir une exécution de code arbitraire à distance dans certaines configurations NGINX + PHP-FPM.
Ce laboratoire démontre l’exploitation de :
Une vulnérabilité affectant PHP-FPM s’exécutant derrière NGINX qui, lorsqu’elle est déclenchée, peut permettre à des attaquants d’exécuter du code arbitraire et d’établir une persistance via un tunnel inverse.
Le projet recrée un environnement vulnérable, exécute la chaîne d’exploitation et évalue comment les adversaires parviennent à une persistance via des techniques de tunneling dans des scénarios réels.
Cette chaîne d’attaque correspond directement à plusieurs techniques MITRE ATT&CK à fort impact :
| ID MITRE | Nom de la technique |
|---|---|
| T1071 | Application Layer Tunneling |
| T1572 | Protocol Tunneling |
| T1090 | Proxy / Reverse Proxy |
| T1505 | Server-Side Components (PHP-FPM) |
| T1574 | Hijacking Execution Flow |
Le tunneling inverse pour la persistance est une TTV (Tactique, Technique, Procédure) très fréquente utilisée par les groupes APT, les botnets et les opérateurs de ransomwares. PHP-FPM reste largement déployé en production, et les mauvaises configurations exploitées par CVE-2019-11043 sont toujours observées dans la nature.
Ce ne sont pas des abstractions théoriques — elles reflètent exactement les comportements documentés dans les campagnes d’exploitation actives impliquant des acteurs étatiques et des groupes de ransomwares.
Même si CVE-2019-11043 a plusieurs années, la vulnérabilité reste pertinente en raison des réalités de sécurité modernes suivantes :
Les applications PHP héritées sont encore partout. De nombreuses organisations continuent d’exécuter d’anciennes piles PHP 5.x/7.x en raison de dépendances applicatives à long terme, de dettes techniques ou de la peur de casser les systèmes de production. Ces environnements restent souvent non corrigés et vulnérables.
NGINX + PHP-FPM est l’une des architectures d’hébergement les plus courantes au monde. Cela rend les vulnérabilités de PHP-FPM extrêmement attrayantes pour les attaquants qui recherchent de vastes surfaces d’exploitation durables.
Le tunneling inverse est une technique de persistance centrale des menaces modernes. Des groupes comme Lazarus, APT29, FIN11 et de nombreux opérateurs de ransomwares utilisent des tunnels SSH inversés, des tunnels WebSocket et même des reverse shells basés sur PHP pour conserver un accès à long terme sans dépendre de ports entrants exposés.
Les mauvaises configurations restent la cause n°1 des violations. Même lorsque des correctifs existent, les blocs NGINX “location” mal configurés et les variables PATH_INFO mal validées continuent d’exposer les environnements à l’exploitation.
Les kits d’automatisation d’exploits ciblent toujours cette CVE. Des outils tels que les scanners automatisés, les botnets et les malwares IoT sondent régulièrement les configurations PHP-FPM vulnérables, car l’exploit aboutit à une exécution de code fiable.
Les environnements cloud élargissent la surface d’attaque. Les conteneurs mal sécurisés, les configurations d’hébergement partagé et les images Docker de base obsolètes contiennent souvent des versions non corrigées de PHP-FPM, ce qui favorise un déplacement latéral rapide dans les réseaux cloud.
Les attaquants aiment les « fruits à portée de main ». Une vulnérabilité permettant l’exécution de code à distance + une persistance par tunnel avec un minimum de compétences requises restera toujours une cible de grande valeur.
Dans le paysage menaçant actuel, où l’accès persistant, le tunneling furtif et les faiblesses de la chaîne d’approvisionnement dominent les titres de la cybersécurité, comprendre et démontrer comment CVE-2019-11043 est exploitée fournit un éclairage essentiel sur les modèles d’attaque modernes et les lacunes défensives.
L’objectif de ce laboratoire était de simuler une exploitation réaliste de CVE‑2019‑11043, une vulnérabilité critique d’exécution de code à distance affectant PHP‑FPM derrière nginx dans certaines configurations. Le but était d’analyser la vulnérabilité, de reproduire l’exploit dans un environnement virtuel contrôlé et de démontrer les risques associés aux infrastructures web mal configurées.
Deux machines virtuelles ont été utilisées : toutes deux avec le nom d’utilisateur username et le mot de passe password.
| Rôle | Machine | Adresse IP | Objectif |
|---|---|---|---|
| Cible / Victime | Ubuntu Server | 192.168.56.102 | Serveur PHP-FPM vulnérable exécutant CVE-2019-11043 |
| Attaquant | Ubuntu Server | 192.168.56.103 | Exécute l’exploit, le reverse shell et la persistance |
Mise à jour d’apt
sudo apt update && sudo apt -y upgrade
Création du conteneur pour l’exploitation de la vulnérabilité.
sudo apt install -y docker.io docker-compose git
git clone https://github.com/vulhub/vulhub.git
cd vulhub/php/CVE-2019-11043
sudo docker-compose up -d