
Rapport détaillé de test d'intrusion démontrant un contournement de chemin non authentifié (CVE-2019-11447) dans le plugin WordPress Simple Backup, incluant les étapes d'exploitation, l'analyse d'impact et les recommandations de remédiation.
| Élément | Détails |
|---|---|
| Titre du document | Rapport de test d'intrusion - Traversée de répertoires WordPress |
| Client/Examen | HackTheBox Lab - CPTS Exercice 1 |
| Date | 22 août 2026 |
| Évaluateur | Fernando Viana (Testeur d'intrusion) |
| Type d'évaluation | Boîte grise (externe, sans identifiants) |
| Environnement de lab | 154.57.164.73:30706 |
| Durée du lab | 1 heure |
| Objectifs | Identifier et exploiter les vulnérabilités pour récupérer des fichiers restreints |
| Flag obtenu | HTB{my_f1r57_h4ck} |
Lors de cette évaluation d'intrusion de l'application web hébergée sur 154.57.164.73:30706, une vulnérabilité critique a été identifiée, permettant à des attaquants non authentifiés de télécharger et de lire des fichiers arbitraires depuis le système de fichiers du serveur.
L'installation WordPress vulnérable contient un plugin obsolète (Simple Backup v2.7.10) présentant une vulnérabilité de traversée de répertoires (CVE-2019-11447) qui permet un accès non autorisé aux fichiers sans nécessiter d'authentification ni d'autorisation.
Cette vulnérabilité a été exploitée avec succès pour récupérer le fichier /flag.txt à la racine du serveur, confirmant une compromission totale de la confidentialité. Un attaquant disposant de cet accès pourrait :
wp-config.php, .env)Une action critique est nécessaire pour corriger cette vulnérabilité immédiatement, car elle présente un risque extrême pour la sécurité des données, la conformité en matière de confidentialité (RGPD, HIPAA, PCI-DSS) et l'intégrité du système.
| Gravité | Nombre | Impact métier |
|---|---|---|
| 🔴 CRITIQUE | 1 | Atteinte totale à la confidentialité ; accès non autorisé aux fichiers |
| 🟠 ÉLEVÉE | 0 | — |
| 🟡 MOYENNE | 0 | — |
| 🟢 FAIBLE | 0 | — |
| ℹ️ INFORMATIVE | 1 | Versions de logiciels obsolètes détectées |
Type d'évaluation : Boîte grise (attaquant externe, aucun identifiant fourni, accès réseau disponible)
Dates d'évaluation : 22 août 2026
Approche de test : Évaluation méthodique et non évasive suivant le cadre de test d'intrusion standard du secteur (PTES) :
CVE-2019-11447 | CWE-22 : Limitation incorrecte d'un chemin d'accès à un répertoire restreint
Le plugin WordPress Simple Backup (version 2.7.10/2.7.11, Exploit-DB 39883) contient une vulnérabilité de traversée de répertoires dans sa page d'administration « Backup Manager ». Le plugin ne nettoie pas le chemin de fichier fourni via le paramètre GET download_backup_file, permettant à un attaquant de sortir du répertoire simple-backup/ prévu en utilisant des séquences de chemin relatif (../) et de télécharger tout fichier lisible par le processus du serveur web — y compris les fichiers à la racine du système de fichiers.
Le point de terminaison vulnérable :
GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
page=backup_manager achemine la requête vers le gestionnaire de page d'administration du plugin ; download_backup_file est le paramètre que le code du plugin lit directement et concatène dans un chemin de système de fichiers sans validation, permettant ainsi le parcours de répertoire.
7.5 - ÉLEVÉ (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
Atteinte à la confidentialité : ⚠️ CRITIQUE
Les attaquants peuvent lire tout fichier accessible au serveur web, notamment :
| Fichier | Impact | Niveau de risque |
|---|---|---|
/wp-config.php | Identifiants de base de données, sels, clés | 🔴 CRITIQUE |
/.env | Clés d'API, secrets, configuration | 🔴 CRITIQUE |
/etc/passwd | Énumération des utilisateurs, cartographie du système | 🟠 ÉLEVÉ |
Clés SSH (.ssh/id_rsa) | Mouvement latéral, accès au système | 🔴 CRITIQUE |
/proc/self/environ | Secrets de l'application en cours d'exécution | 🟠 ÉLEVÉ |
| Répertoire des téléversements utilisateurs | Fichiers privés, médias | 🟠 ÉLEVÉ |
Impact réglementaire :
L'avis Exploit-DB (39883.txt, lu via searchsploit -x — voir ht4-poc.png) documente la primitive delete du plugin issue de simple-backup-manager.php :
if(array_key_exists('delete_backup_file', $_GET)){
$this->delete_local_backup_file($_GET['delete_backup_file']);
}
$bk_dir = ABSPATH."simple-backup/";
unlink($bk_dir . $filename);
$filename provient directement de $_GET['delete_backup_file'] sans basename() ni vérification de confinement du chemin. En passant ../pizza.txt, $bk_dir . $filename se résout en .../simple-backup/../pizza.txt → .../pizza.txt, échappant ainsi du dossier de sauvegarde prévu.
La primitive de téléchargement réellement exploitée dans cet engagement (download_backup_file) suit exactement le même schéma de concaténation non assainie dans le même plugin, mais renvoie le fichier au demandeur au lieu de le supprimer — ce qui a permis la récupération de /flag.txt depuis la racine du système de fichiers (10× ../ depuis ABSPATH/simple-backup/).
Le problème :
basename() pour supprimer les composants de répertoirerealpath() reste dans ABSPATH."simple-backup/"current_user_can() / d'authentification avant de servir le fichier — le gestionnaire s'exécute au chargement du plugin, avant la barrière d'authentification wp-admin de WordPress, il est donc accessible sans être connecté