
Unauthenticated RCE PoC für CVE-2026-48908 — SP Page Builder für Joomla (≤ 6.6.1): beliebiger Datei-Upload über asset.uploadCustomIcon. Selbstreinigend, token-geschützt. Nur autorisierte Tests.
Proof-of-concept-Exploit für CVE-2026-48908, eine kritische (CVSS 4.0 = 10.0) nicht authentifizierte Remote-Code-Ausführungsschwachstelle in der SP Page Builder-Komponente (com_sppagebuilder) für Joomla, von JoomShaper.
| CVE | CVE-2026-48908 |
| Schwachstelle | CWE-284 Unzureichende Zugriffskontrolle → Nicht authentifizierter willkürlicher Dateiupload → RCE |
| Komponente | SP Page Builder (com_sppagebuilder) für Joomla |
| Betroffen | 1.0.0 – 6.6.1 |
| Behoben in | 6.6.2 |
| Erforderliche Berechtigungen | Keine (vor der Authentifizierung) |
| Benutzerinteraktion | Keine |
SP Page Builder stellt die Controller-Aufgabe asset.uploadCustomIcon zum Hochladen eines benutzerdefinierten Icon‑Font‑Pakets bereit:
index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
In betroffenen Versionen ist diese Aufgabe ohne Authentifizierung und ohne gültiges Anti‑CSRF‑Token erreichbar. Sie akzeptiert ein ZIP‑Archiv (Multipart‑Feld custom_icon) und extrahiert dessen Inhalt in ein öffentlich über das Web zugängliches Verzeichnis unter dem Dokumentenroot:
/media/com_sppagebuilder/assets/iconfont/<name>/ (einschließlich fonts/‑Unterordner)
Da der Upload vor der Authentifizierung erreichbar ist und die extrahierten Dateien im Web‑Root landen, kann ein Angreifer vom Angreifer kontrollierte Dateien an einen durchsuchbaren Ort schreiben und über HTTP darauf zugreifen.
Einige Builds fügen einen serverseitigen Dateinamen‑Filter für die Archiveinträge hinzu. Dieser PoC umgeht eine gängige Implementierung mit einer dreistufigen Kette:
.php, .phtml, .phar, .php3–.php8, .pht, .inc, … ab, normalisiert jedoch nicht die Groß‑/Kleinschreibung, sodass .PHP (und andere gemischte Schreibweisen) sowie .htaccess durchgelassen werden.<FilesMatch "\.php$">) führt nur Kleinbuchstaben .php aus, sodass ein hochgeladenes .PHP zunächst als Quelltext, nicht als ausführbarer Code, ausgeliefert wird..htaccess‑Override. Eine (die die Blockliste ebenfalls übersieht), die enthält, wird neben der Nutzlast abgelegt. Wo dies erlaubt, registriert dies als PHP und die hochgeladene Shell .Der PoC verpackt immer eine gültige Icon‑Font‑Struktur (selection.json, style.css, fonts/<name>.ttf), damit der Upload akzeptiert wird, und fügt dann die Shell hinzu.
Adaptiv – er durchläuft eine Liste von PHP‑ausführbaren Erweiterungen (geringste Größe zuerst), dann einen .htaccess‑Fallback, und stoppt bei der ersten, die tatsächlich Code ausführt:
fonts/<shell>.<ext> für jede der Erweiterungen php, php3, php4, php5, php7, pht, phtml, phar, PHP, pHp, Php. Keine .htaccess. Unterschiedliche SP Page Builder‑Filter blockieren unterschiedliche Mengen, und unterschiedliche Apache‑Konfigurationen führen unterschiedliche Erweiterungen aus – daher findet dies jede Kombination, die das Ziel zulässt und ausführt.fonts/.htaccess + fonts/<shell>.PHP (Fallback) — nur wenn jeder direkte Versuch fehlschlägt. Die abgelegte .htaccess (AddType … .PHP) erzwingt die Ausführung eines großgeschriebenen .PHP, wo AllowOverride dies erlaubt (das ist, was 5.4.6‑ähnliche Hosts benötigen).Es stoppt bei der ersten Methode, die ausgeführt wird, und gibt aus, welche erfolgreich war. Jeder akzeptierte Upload wird nachverfolgt, sodass --cleanup alle entfernt (mehrere Versuche können schreibgeschützte Verzeichnisse hinterlassen).
Je nach Version und Serverhärtung variiert das Ergebnis, und der PoC gibt es explizit an (siehe Ergebnisse unten): vollständige RCE, nur Dateischreiben (PHP deaktiviert /
AllowOverride None), gepatcht (nur Admin), oder nicht verwundbar.
pip install -r requirements.txt # requests
# Schwachstelle bestätigen und Codeausführung nachweisen (führt `id` aus)
python3 sppb_rce.py https://ziel.example
# Einen bestimmten Befehl ausführen
python3 sppb_rce.py --url ziel.example -c "uname -a"
# Interaktive Pseudo‑Shell
python3 sppb_rce.py https://ziel.example --shell
# Nur überprüfen; keinen Befehl ausführen
python3 sppb_rce.py https://ziel.example --check
# Das hochgeladene Nutzlastverzeichnis danach entfernen
python3 sppb_rce.py https://ziel.example --cleanup
Das Ziel kann als Positionsargument oder über --url angegeben werden, mit oder ohne Schema.
[*] target : https://ziel.example
[*] endpoint : index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
[*] try .php -> rejected by filter
[*] try .php3 -> rejected by filter
...
[*] try .PHP -> uploaded, not executed
[*] try .htaccess+.PHP -> EXECUTED
[+] CODE EXECUTION CONFIRMED via '.htaccess+.PHP' (echo 7*6 -> 42)
[*] running: id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
------------------------------------------------------------
[*] cleanup: done (4 dirs)
Der PoC teilt immer das Urteil über das Ziel mit:
404 zurück, wenn jemand ohne dieses Token zugreift – es ist keine vollständig offene Hintertür.--cleanup löscht das erstellte Nutzlastverzeichnis.id, ein arithmetischer Marker)./media/, /images/, /tmp) über den FPM‑Pool oder php_admin_flag engine off.AllowOverride None auf diesen Verzeichnissen, sodass eine abgelegte .htaccess keine Handler wieder aktivieren kann..php/.PHP unter media/.../iconfont/, neuen Super‑User‑Konten und platzierten Dateimanagern.Joomla SP Page Builder Exploit · com_sppagebuilder unauthenticated RCE · CVE-2026-48908 PoC · asset.uploadCustomIcon willkürlicher Dateiupload · Joomla Remote‑Code‑Ausführung · Pentest‑Exploit‑Skript
Diese Software wird nur zu Bildungszwecken und für autorisierte Sicherheitstests veröffentlicht – z. B. Penetrationstests, für die Sie schriftliche Genehmigung haben, Bug‑Bounty‑Programme, die das Ziel in ihrem Geltungsbereich enthalten, CTF‑Wettbewerbe und eigene Laborsysteme.
Der Zugriff, die Änderung oder Störung von Computersystemen ohne Autorisierung ist in den meisten Jurisdiktionen illegal. Sie sind allein und vollständig für Ihre eigenen Handlungen verantwortlich. Durch die Nutzung, das Herunterladen oder die Verbreitung dieses Codes stimmen Sie zu, dass:
Wenn Sie diesen Bedingungen nicht zustimmen, verwenden Sie diese Software nicht. Wie bei jedem öffentlich verfügbaren Exploit/PoC wird er in gutem Glauben geteilt, um Verteidigern zu helfen, die Schwachstelle zu erkennen, zu verstehen und zu beheben; was Sie damit tun, liegt in Ihrer Verantwortung.
MIT – siehe LICENSE.
.htaccessAddType application/x-httpd-php .PHPAllowOverride.PHP| Ausgabe | Bedeutung | Exit |
|---|
CODE EXECUTION CONFIRMED via '<method>' | Verwundbar – vollständige unauthentifizierte RCE | 0 |
[~] PARTIALLY VULNERABLE — unauth file-write works, but PHP did NOT execute | Nur Dateischreiben (AllowOverride None / PHP deaktiviert in /media) | 3 |
[-] TARGET NOT VULNERABLE — SP Page Builder is patched (6.6.2+) | Gepatched – Upload erfordert jetzt Admin‑Authentifizierung | 1 |
[-] TARGET NOT VULNERABLE — every upload was rejected, or SP Page Builder is absent/patched | Nicht ausnutzbar / Komponente nicht vorhanden | 2 |