Un laboratoire pratique qui enquête sur la CVE-2025-39507 du point de vue d'un analyste SOC de niveau 1. Comprend une revue des journaux dans Microsoft Sentinel, une analyse d'adresses IP, des captures d'écran réelles et une explication simple d'une vulnérabilité d'inclusion locale de fichier dans un plugin WordPress.
C'est un lundi ordinaire. Je suis connecté au tableau de bord du SOC et j'examine les alertes comme d'habitude. L'une d'elles attire mon attention :
ALERTE : Tentative possible d'inclusion locale de fichier (LFI)
Adresse IP : 203.0.113.44
URL :/index.php?file=../../../../etc/passwd
User-Agent : curl/7.81.0
On dirait que quelqu'un essaie peut-être d'accéder à des fichiers système en manipulant une URL. Mon travail consiste à examiner cela et à décider si cela doit être escaladé.
Après une recherche rapide, j'ai constaté que cela correspond à une vulnérabilité connue : CVE-2025-39507. Elle affecte un plugin WordPress appelé Nasa Core (versions 6.3.2 et inférieures). Elle permet aux attaquants de consulter des fichiers sensibles sur le serveur en modifiant un paramètre d'entrée de fichier.
Exemple :
/index.php?file=../../../../etc/passwd
Si le plugin ne valide pas correctement l'entrée de fichier, il suivra simplement le chemin que l'attaquant lui fournit.
Je n'ai pas écrit la règle de détection, mais je l'ai examinée pour comprendre ce qui a déclenché l'alerte. Elle recherche des éléments comme :
/etc/passwd ou /wp-config.phpVoici une version simplifiée de la règle :
CommonSecurityLog
| where RequestURL has "../"
or RequestURL has "etc/passwd"
or RequestURL has "wp-config"
| where DeviceCustomString1 contains "curl" or DeviceCustomString1 contains "python"
| project TimeGenerated, SourceIP, RequestURL, DeviceCustomString1
J'ai exécuté une requête pour voir si l'IP 203.0.113.44 tentait autre chose :
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize count() by RequestURL
Il s'avère qu'elle a aussi touché d'autres chemins comme /admin/, /login.php et /wp-config.php. Cela m'a indiqué que ce n'était pas simplement une requête ponctuelle... c'était probablement un scanner ou quelqu'un faisant de la reconnaissance.
J'ai vérifié depuis combien de temps l'IP était active dans nos journaux :
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated)
Elle avait commencé il y a quelques heures et était encore active récemment. Ce n'était donc pas du bruit historique — c'était une activité en cours.
Voici comment je l'ai documenté pour l'escalade :
« Scan LFI possible depuis l'IP 203.0.113.44. Le modèle de requête correspond à CVE-2025-39507. L'IP a accédé à 9 chemins uniques, y compris /etc/passwd et wp-config.php, en utilisant curl. Le comportement suggère une reconnaissance automatisée. Recommandation : examen par le niveau 2 et blocage possible de l'IP. »
| # | Description | Fichier |
|---|---|---|
| 1 | Liste des CVE (Patchstack) | 1_cve_selection_listing.png |
| 2 | Aperçu Patchstack | 2_patchstack_cve_overview.png |
| 3 | Exemple de vecteur VulDB | 3_vuldb_exploit_vector.png |
| 4 | VM Kali Azure créée | 4_kali_vm_deployed.png |
| 5 | Capture d'écran de la VM en cours d'exécution | 5_kali_vm_running_status.png |
| 6 | Accès SSH à Kali | 6_kali_vm_logged_in.png |
| 7 | Examen de la règle KQL Sentinel | 7_lfi_detection_kql_query.png |
Toutes les captures d'écran se trouvent dans le dossier /screenshots.
Quelques questions que je me suis posées au cours de cette analyse :
Ensuite, je vais exécuter une simulation sûre de cette attaque dans un environnement de laboratoire contrôlé en utilisant une plateforme comme TryHackMe. L'objectif est de mieux comprendre à quoi ressemble ce type d'activité du côté de l'attaquant — et quel type de journaux cela génère.
P.S. Ce laboratoire a été réalisé dans un environnement sûr et éthique à des fins de formation uniquement. Aucun système réel n'a été ciblé ni endommagé. Suivez toujours les règles de votre organisation et ne testez jamais d'exploits sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation de tester.