Valide CVE-2026-48908 dans Joomla SP Page Builder avec un téléchargement d'icône non autorisé conduisant à l'exécution de code PHP. Inclut des preuves auditd/PCAP, une chronologie des événements et des recommandations de détection SOC pour la recherche défensive.
Validation en laboratoire de CVE-2026-48908 dans le composant Joomla SP Page Builder, axée sur les preuves techniques, la reconstruction des événements et les opportunités de détection défensive.
Ce référentiel documente un test contrôlé dans lequel le point de terminaison asset.uploadCustomIcon de SP Page Builder a accepté des archives d'icônes téléchargées qui ont abouti à l'écriture d'artefacts PHP sous le répertoire multimédia de Joomla. L'invocation du fichier PHP téléchargé via HTTP a conduit à l'exécution de commandes en tant qu'utilisateur du processus du serveur web. L'activité HTTP, fichier, processus, authentification et réseau résultante a été capturée à l'aide des logs du conteneur Apache, de Linux auditd, de tcpdump, de la télémétrie Docker, de l'interrogation des modifications de fichiers et de captures d'écran de l'hôte Windows.
[!IMPORTANT] Ce référentiel contient uniquement des rapports et des captures d'écran. Le code d'exploit offensif, le code source des charges utiles, les fichiers PCAP bruts et les ensembles de preuves brutes de l'hôte ne sont volontairement pas inclus. Le matériel est destiné à la validation de vulnérabilités, à l'ingénierie SOC, au développement de détections, à la préparation aux incidents et à la recherche autorisée.
Les deux rapports contiennent la méthodologie de test complète, des extraits de preuves, une chronologie des événements, des preuves de modifications de fichiers, des indicateurs réseau, des conseils d'atténuation, des recommandations d'audit et un exemple de logique SIEM.
.
├── README.md
├── SHA256SUMS.txt
├── reports/
│ ├── CVE-2026-48908_SP_Page_Builder_detection_EN.pdf
│ └── CVE-2026-48908_SP_Page_Builder_detection_PL.pdf
└── screenshots/
├── 01_poc_upload_and_code_execution.png
├── 02_http_whoami_www_data.png
├── 03_tcp_callback_ncat.png
├── 04_reverse_shell_session.png
└── 05_root_access_and_su_failure_redacted.png
Aucun code source d'exploit, source de charge utile, PCAP brut, paquet de preuves Docker brut ou fichier source DOCX n'est inclus.
| Rôle | Système |
|---|---|
| Hôte victime | Ubuntu 24.04.4 LTS, noyau 6.17.0-35-generic, Docker Engine 29.5.3 |
| Application cible | Joomla 5.4.7, PHP 8.3.32, Apache HTTP Server, image joomla:5-php8.3-apache |
| Composant | JoomShaper SP Page Builder |
| Conteneur | joomla5-builders |
| Poste de travail attaquant | Microsoft Windows 11 Home 10.0.26200 |
| Service Joomla | http://172.20.10.3:8080 |
| Adresse de test Windows | 172.20.10.2 |
| Adresse du conteneur | 172.21.0.3 |
| Date du test | 9 juillet 2026 |
La racine web de Joomla /var/www/html était soutenue par le volume Docker joomla5-builders_joomla_data. Ceci est important pour la détection : docker diff n'a pas fourni de visibilité détaillée sur les modifications de fichiers à l'intérieur du volume, donc la surveillance des fichiers a dû s'appuyer sur des listes de fichiers tenant compte des volumes et des conseils de surveillance côté hôte.
Le test a été réalisé dans un environnement de laboratoire isolé et autorisé. La validation a couvert la séquence suivante :
asset.uploadCustomIcon de SP Page Builder a accepté les archives d'icônes téléchargées dans l'environnement de laboratoire./media/com_sppagebuilder/assets/iconfont/..htaccess qui modifiait la gestion PHP pour l'extension .PHP./root et de changement d'utilisateur avec su - ont échoué.Les rapports documentent intentionnellement les preuves et la logique de détection sans distribuer d'exploit ou d'implémentation de charge utile réutilisable.
Le test en laboratoire a confirmé :
asset.uploadCustomIcon de SP Page Builder ;.htaccess sous le répertoire multimédia de Joomla ;www-data ;À l'intérieur du conteneur, l'identité effective était :
uid=33(www-data) gid=33(www-data) groups=33(www-data)
La tentative d'élévation de privilèges échouée était visible comme :
cd root
bash: cd: root: Permission denied
su -
Password:
su: Authentication failure
Le PoC public a testé plusieurs variantes d'extension et a confirmé qu'une combinaison impliquant une extension PHP à casse mixte et un .htaccess pouvait conduire à une exécution dans la configuration du laboratoire.

Une requête HTTP contrôlée a exécuté whoami, et le navigateur a affiché l'utilisateur effectif du processus.

Avant le test interactif, un rappel à message unique plus sûr a été utilisé pour confirmer la connectivité sortante depuis l'environnement cible vers l'hôte Windows sur le port TCP 4444.

La session interactive a confirmé l'exécution en tant que www-data, Linux comme système d'exploitation et un répertoire de travail sous le chemin multimédia de Joomla SP Page Builder.

Les tentatives d'accès à /root et d'authentification avec su - ont échoué. La capture d'écran est masquée pour éviter de publier le mot de passe de test.

La chronologie complète est disponible dans les deux rapports PDF. Les événements les plus importants étaient :
| UTC | Événement |
|---|---|
| 19:33:56 | Démarrage de l'audit Linux, tcpdump, événements Docker et interrogation des modifications de fichiers |
| 19:34:23 | Série de requêtes POST vers /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon |
| 19:34:23.291 | GET vers un fichier .PHP téléchargé avec une commande arithmétique contrôlée |
| 19:34:23.329 | GET vers un fichier .pHp téléchargé avec une commande arithmétique contrôlée |
| 19:34:23.361 | GET vers un fichier .Php téléchargé avec une commande arithmétique contrôlée |
| 19:34:23.398 | GET vers l'artefact .PHP final avec une commande arithmétique contrôlée |
| 19:34:23.411 | Le PoC public a exécuté id via l'artefact PHP téléchargé et a reçu un HTTP 200 |
| 19:35:05 | Requête manuelle whoami a renvoyé www-data |
| 19:35:27 | Rappel TCP unique vers 172.20.10.2:4444 réussi |
| 19:35:59 | Requête HTTP a initié une connexion TCP inverse vers 172.20.10.2:4444 |
| 19:36:22-19:36:31 | whoami, uname, id et pwd ont confirmé le contexte d'exécution |
| 19:37:13 | cd root a renvoyé Permission denied |
| 19:37:21-19:37:28 | Tentative su - a échoué avec Authentication failure |
| 19:39:25 | La collecte d'audit a été arrêtée et les artefacts ont été emballés |
L'hôte victime a collecté :
auditd pour execve ;tcpdump ;Le test a également identifié une limitation de surveillance : parce que /var/www/html était soutenu par un volume Docker, docker diff n'a pas montré la création détaillée de fichiers sous /var/www/html/media/com_sppagebuilder/assets/iconfont/. La surveillance de l'intégrité des fichiers devrait donc couvrir le chemin réel de l'hôte qui soutient le volume.
Les preuves de l'hôte Windows ont été intentionnellement limitées aux captures d'écran pertinentes pour le rapport :
whoami ;/root et su - avec le mot de passe masqué.Surveillez la télémétrie HTTP, proxy inverse, WAF ou réseau pour la combinaison suivante :
POST /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
User-Agent contient : sppb-rce-poc
Statut : 200, 201 ou 204
En production, ne vous fiez pas uniquement au User-Agent du PoC public. Le point de terminaison et le modèle de téléchargement inattendu sont des indicateurs plus stables que la valeur du User-Agent.
.htaccess sous le chemin des icônes SP Page BuilderSurveillez la télémétrie des fichiers pour les nouveaux fichiers ou fichiers modifiés correspondant à :
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.php
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.PHP
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.pHp
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.Php
/media/com_sppagebuilder/assets/iconfont/*/fonts/.htaccess
La présence d'un .htaccess contenant AddType application/x-httpd-php .PHP dans un répertoire de téléchargement multimédia est un indicateur de haute valeur.
Corrélez l'activité de téléchargement avec les requêtes HTTP ultérieures vers des chemins comme :
/media/com_sppagebuilder/assets/iconfont/*/fonts/*
Une confiance plus élevée est atteinte lorsque la requête cible une extension de type PHP et inclut des paramètres tels que t= et c=.
Les indicateurs de processus de haute valeur incluent :
utilisateur : www-data, apache ou nginx
processus : bash, sh, dash ou php
ligne de commande contient : /dev/tcp, bash -i, opérateurs de redirection ou exécution d'interpréteur inhabituelle
Créez une alerte lorsqu'un shell ou interpréteur lancé par le processus du serveur web initie une connexion sortante vers un poste de travail ou un port de destination inhabituel. L'événement de laboratoire a utilisé le port TCP 4444, mais la détection en production ne devrait pas dépendre d'un seul port.
Le test a produit une tentative échouée de su -. Surveillez les helpers d'authentification tels que unix_chkpwd, les écritures dans /var/log/btmp, et les commandes interactives suite à une compromission du compte de service web.
Lorsque l'indicateur de téléchargement HTTP est détecté, le SOC doit immédiatement le corréler avec :
/media/com_sppagebuilder/assets/iconfont/ ;.htaccess sous les répertoires multimédia de Joomla ;t= et c= ;whoami, id, uname, hostname, pwd, ip, ifconfig, netstat ou ss ;Un seul événement de téléchargement n'est pas toujours suffisant en soi. L'alerte la plus forte combine télémétrie de téléchargement, de création de fichier, d'accès au fichier, d'exécution de processus et de réseau sortant dans la même fenêtre temporelle courte.
/media/com_sppagebuilder/assets/iconfont/ et le répertoire multimédia plus large de Joomla pour les fichiers de type PHP et les artefacts .htaccess..htaccess, .phtml, .phar, archive ou artefact exécutable inattendu des répertoires de téléchargement.asset.uploadCustomIcon depuis des réseaux non fiables.docker diff pour la surveillance de la racine web lorsque les données de l'application sont stockées dans des volumes Docker ou des montages de liaison.www-data ; l'élévation de privilèges vers root n'a pas été confirmée.Ce matériel est fourni pour la recherche en sécurité défensive, la gestion des vulnérabilités, l'ingénierie de détection, la préparation aux incidents et les tests autorisés. Ne l'utilisez pas contre des systèmes sans autorisation explicite.