
Laborvalidierung von CVE-2026-48908 in Joomla SP Page Builder, inklusive unautorisiertem Icon-Upload, PHP-Dateischreibvorgang, Codeausführung als www-data, auditd- und PCAP-Beweisen, Rekonstruktion der Ereigniszeitlinie und SOC-Erkennungsempfehlungen. Enthält polnische und englische Berichte.
Laborvalidierung von CVE-2026-48908 in der Joomla SP Page Builder Komponente, mit Fokus auf technische Beweise, Ereignisrekonstruktion und defensive Erkennungsmöglichkeiten.
Das Repository dokumentiert einen kontrollierten Test, bei dem der asset.uploadCustomIcon-Endpunkt des SP Page Builders hochgeladene Icon-Archive akzeptierte, die zur Erstellung von PHP-Artefakten unter dem Joomla-Medienverzeichnis führten. Das Aufrufen der hochgeladenen PHP-Datei über HTTP führte zur Befehlsausführung als Prozessbenutzer des Webservers. Die daraus resultierenden HTTP-, Datei-, Prozess-, Authentifizierungs- und Netzwerkaktivitäten wurden mit Apache-Container-Logs, Linux auditd, tcpdump, Docker-Telemetrie, Dateiänderungsabfragen und Screenshots vom Windows-Host erfasst.
[!IMPORTANT] Dieses Repository enthält ausschließlich Berichte und Screenshots. Angriffs-Exploit-Code, Payload-Quellen, rohe PCAP-Dateien und rohe Host-Beweispakete sind absichtlich nicht enthalten. Das Material ist für Schwachstellenvalidierung, SOC-Engineering, Erkennungsentwicklung, Incident-Response-Vorbereitung und autorisierte Forschung bestimmt.
Beide Berichte enthalten die vollständige Testmethodik, Beweisauszüge, Ereigniszeitlinie, Dateiänderungsnachweise, Netzwerkindikatoren, Hinweise zur Gegenmaßnahme, Prüfempfehlungen und Beispiel-SIEM-Logik.
.
├── 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
Es sind keine Exploit-Quellen, Payload-Quellen, rohen PCAP-Dateien, rohen Docker-Beweispakete oder DOCX-Quelldateien enthalten.
Das Joomla-Webroot /var/www/html wurde durch das Docker-Volume joomla5-builders_joomla_data bereitgestellt. Dies ist für die Erkennung wichtig: docker diff bot keine detaillierte Sicht auf Dateiänderungen innerhalb des Volumes, daher musste die Dateiüberwachung auf volumenbewusste Dateilistings und hostseitige Überwachungshinweise zurückgreifen.
Der Test wurde in einer isolierten und autorisierten Laborumgebung durchgeführt. Die Validierung umfasste folgende Abfolge:
asset.uploadCustomIcon-Endpunkt des SP Page Builders akzeptierte hochgeladene Icon-Archive in der Laborumgebung./media/com_sppagebuilder/assets/iconfont/ erstellt..htaccess-Datei, die die PHP-Behandlung für die .PHP-Erweiterung änderte./root zuzugreifen und mit su - den Benutzer zu wechseln, schlugen fehl.Die Berichte dokumentieren absichtlich Beweise und Erkennungslogik, ohne einen wiederverwendbaren Exploit oder eine Payload-Implementierung zu verteilen.
Der Labortest bestätigte:
asset.uploadCustomIcon-Endpunkt des SP Page Builders;.htaccess-Artefakten unter dem Joomla-Medienverzeichnis;www-data;Innerhalb des Containers lautete die effektive Identität:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Der fehlgeschlagene Rechteausweitungsversuch war sichtbar als:
cd root
bash: cd: root: Permission denied
su -
Password:
su: Authentication failure
Der öffentliche PoC testete mehrere Erweiterungsvarianten und bestätigte, dass eine Kombination aus einer PHP-Erweiterung in gemischter Groß-/Kleinschreibung und .htaccess im Laboraufbau zur Ausführung führen konnte.

Eine kontrollierte HTTP-Anfrage führte whoami aus, und der Browser zeigte den effektiven Prozessbenutzer an.

Vor dem interaktiven Test wurde ein sichererer Einmal-Nachrichten-Rückruf verwendet, um die ausgehende Konnektivität von der Zielumgebung zum Windows-Host auf TCP-Port 4444 zu bestätigen.

Die interaktive Sitzung bestätigte die Ausführung als www-data, Linux als Betriebssystem und ein Arbeitsverzeichnis unter dem Joomla-SP-Page-Builder-Medienpfad.

Versuche, auf /root zuzugreifen und sich mit su - zu authentifizieren, schlugen fehl. Der Screenshot ist geschwärzt, um das Testpasswort nicht zu veröffentlichen.

Die vollständige Zeitlinie ist in beiden PDF-Berichten verfügbar. Die wichtigsten Ereignisse waren:
Der Opfer-Host sammelte:
auditd-Ereignisse für execve;tcpdump;Der Test identifizierte auch eine Überwachungseinschränkung: Da /var/www/html durch ein Docker-Volume bereitgestellt wurde, zeigte docker diff keine detaillierten Dateierstellungen unter /var/www/html/media/com_sppagebuilder/assets/iconfont/ an. Die Dateiintegritätsüberwachung sollte daher den tatsächlichen Host-Pfad abdecken, der das Volume bereitstellt.
Die Windows-Host-Beweise wurden absichtlich auf berichtsrelevante Screenshots beschränkt:
whoami;/root- und su --Versuch mit geschwärztem Passwort.Überwachen Sie HTTP-, Reverse-Proxy-, WAF- oder Netzwerktelemetrie auf folgende Kombination:
POST /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
User-Agent enthält: sppb-rce-poc
Status: 200, 201 oder 204
Verlassen Sie sich in der Produktion nicht nur auf den User-Agent des öffentlichen PoC. Der Endpunkt und das unerwartete Upload-Muster sind stabilere Indikatoren als der User-Agent-Wert.
.htaccess unter dem SP Page Builder Icon-PfadÜberwachen Sie die Dateitelemetrie auf neue oder geänderte Dateien, die auf Folgendes passen:
/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
Das Vorhandensein einer .htaccess-Datei, die AddType application/x-httpd-php .PHP in einem Medien-Upload-Verzeichnis enthält, ist ein hochwertiger Indikator.
Korrelieren Sie Upload-Aktivitäten mit nachfolgenden HTTP-Anfragen an Pfade wie:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*
Eine höhere Sicherheit wird erreicht, wenn die Anfrage auf eine PHP-ähnliche Erweiterung abzielt und Parameter wie t= und c= enthält.
Hochwertige Prozessindikatoren umfassen:
user: www-data, apache oder nginx
process: bash, sh, dash oder php
Befehlszeile enthält: /dev/tcp, bash -i, Umleitungsoperatoren oder ungewöhnliche Interpreter-Ausführung
Alarmieren Sie, wenn eine Shell oder ein Interpreter, der vom Webserver-Prozess gestartet wurde, eine ausgehende Verbindung zu einer Workstation oder einem ungewöhnlichen Zielport initiiert. Das Laborereignis verwendete TCP-Port 4444, aber die Erkennung in der Produktion sollte sich nicht auf einen einzelnen Port verlassen.
Der Test erzeugte einen fehlgeschlagenen su --Versuch. Überwachen Sie auf Authentifizierungshelfer wie unix_chkpwd, Schreibvorgänge in /var/log/btmp und interaktive Befehle nach einer Kompromittierung des Webdienstkontos.
Wenn der HTTP-Upload-Indikator erkannt wird, sollte das SOC sofort Folgendes korrelieren:
/media/com_sppagebuilder/assets/iconfont/;.htaccess-Dateien unter Joomla-Medienverzeichnissen;t= und c=;whoami, id, uname, hostname, pwd, ip, ifconfig, netstat oder ;Ein einzelnes Upload-Ereignis ist allein nicht immer ausreichend. Der stärkste Alarm kombiniert Upload, Dateierstellung, Dateizugriff, Prozessausführung und Netzwerktelemetrie innerhalb desselben kurzen Zeitfensters.
/media/com_sppagebuilder/assets/iconfont/ und das gesamte Joomla-Medienverzeichnis auf PHP-ähnliche Dateien und .htaccess-Artefakte..htaccess-, .phtml-, .phar-, Archiv- oder ausführbaren Artefakte aus Upload-Verzeichnissen.asset.uploadCustomIcon-Endpunkt aus nicht vertrauenswürdigen Netzwerken oder lösen Sie einen Alarm aus.docker diff für die Webroot-Überwachung, wenn Anwendungsdaten in Docker-Volumes oder Bind-Mounts gespeichert werden.www-data; eine Rechteausweitung auf root wurde nicht bestätigt.Dieses Material wird für defensive Sicherheitsforschung, Schwachstellenmanagement, Erkennungsentwicklung, Incident-Response-Vorbereitung und autorisierte Tests bereitgestellt. Verwenden Sie es nicht gegen Systeme ohne ausdrückliche Genehmigung.
| Rolle | System |
|---|
| Opfer-Host | Ubuntu 24.04.4 LTS, Kernel 6.17.0-35-generic, Docker Engine 29.5.3 |
| Zielanwendung | Joomla 5.4.7, PHP 8.3.32, Apache HTTP Server, Image joomla:5-php8.3-apache |
| Komponente | JoomShaper SP Page Builder |
| Container | joomla5-builders |
| Angreifer-Workstation | Microsoft Windows 11 Home 10.0.26200 |
| Joomla-Dienst | http://172.20.10.3:8080 |
| Windows-Testadresse | 172.20.10.2 |
| Container-Adresse | 172.21.0.3 |
| Testdatum | 9. Juli 2026 |
| UTC | Ereignis |
|---|
| 19:33:56 | Linux audit, tcpdump, Docker-Ereignisse und Dateiänderungsabfragen gestartet |
| 19:34:23 | Serie von POST-Anfragen an /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon |
| 19:34:23.291 | GET auf eine hochgeladene .PHP-Datei mit einem kontrollierten arithmetischen Befehl |
| 19:34:23.329 | GET auf eine hochgeladene .pHp-Datei mit einem kontrollierten arithmetischen Befehl |
| 19:34:23.361 | GET auf eine hochgeladene .Php-Datei mit einem kontrollierten arithmetischen Befehl |
| 19:34:23.398 | GET auf das finale .PHP-Artefakt mit einem kontrollierten arithmetischen Befehl |
| 19:34:23.411 | Der öffentliche PoC führte id über das hochgeladene PHP-Artefakt aus und erhielt HTTP 200 |
| 19:35:05 | Manuelle whoami-Anfrage gab www-data zurück |
| 19:35:27 | Einmaliger TCP-Rückruf an 172.20.10.2:4444 erfolgreich |
| 19:35:59 | HTTP-Anfrage initiierte eine reverse TCP-Verbindung zu 172.20.10.2:4444 |
| 19:36:22-19:36:31 | whoami, uname, id und pwd bestätigten den Ausführungskontext |
| 19:37:13 | cd root gab Permission denied zurück |
| 19:37:21-19:37:28 | su --Versuch schlug fehl mit Authentication failure |
| 19:39:25 | Audit-Sammlung gestoppt und Artefakte verpackt |
ss