rufflabs/ludus_crushftp_cve-2025-31161
GitHub: rufflabs/ludus_crushftp_cve-2025-31161
该 Ansible 角色用于在 Ludus 平台上自动化部署含 CVE-2025-31161 漏洞的 CrushFTP 实例,方便安全团队进行授权渗透测试。
Stars: 0 | Forks: 0
# Ansible Role: CrushFTP CVE-2025-31161 ([Ludus](https://ludus.cloud))
一个 Ansible Role,用于在 Windows 上部署存在漏洞的 [CrushFTP 10.8.0](https://www.crushftp.com/) 实例,以便对 [CVE-2025-31161](https://nvd.nist.gov/vuln/detail/CVE-2025-31161)(身份验证绕过)进行授权的渗透测试。
存在漏洞的 CrushFTP 二进制文件托管在 [rufflabs/crushftp_cve-2025-31161](https://github.com/rufflabs/crushftp_cve-2025-31161),并在部署时自动下载。如果该仓库不可用,该 role 将回退到直接从 Docker Hub 拉取。
## 要求
- 目标必须是启用了 WinRM 的 Windows 虚拟机。
- Ludus 主机在首次部署时需要对 GitHub 和 `api.adoptium.net` 的出站 HTTPS 访问权限(之后文件会被缓存)。
## Role 变量
可用的变量如下所示,并附带默认值(参见 `defaults/main.yml`):
```
# 存在漏洞的 CrushFTP 构建的 GitHub Release URL
ludus_crushftp_download_url: "https://github.com/rufflabs/crushftp_cve-2025-31161/releases/download/v10.8.0_4/CrushFTP10_10.8.0_4.zip"
# 如果 GitHub 下载失败,则回退到 Docker Hub
ludus_crushftp_fallback_to_docker: true
# Windows 目标上的安装路径
ludus_crushftp_install_dir: "C:\\CrushFTP"
# 管理员账户(CVE-2025-31161 的默认 exploit 目标)
ludus_crushftp_admin_user: "crushadmin"
ludus_crushftp_admin_password: "CrushAdmin123!"
# Windows 服务设置
ludus_crushftp_service_name: "CrushFTP"
ludus_crushftp_service_start_mode: auto
# 网络端口
ludus_crushftp_http_port: 8080
ludus_crushftp_https_port: 443
# 创建 Windows Firewall 允许规则
ludus_crushftp_configure_firewall: true
```
## 依赖
无。
## Ludus 靶场配置示例
```
ludus:
- vm_name: "{{ range_id }}-crushftp"
hostname: "{{ range_id }}-CRUSH"
template: win2022-server-x64-template
vlan: 20
ip_last_octet: 10
ram_gb: 4
cpus: 2
windows:
sysprep: true
roles:
- rufflabs.ludus_crushftp_cve_2025_31161
role_vars:
ludus_crushftp_admin_user: "crushadmin"
ludus_crushftp_admin_password: "CrushAdmin123!"
```
## Ludus 使用方法
```
# 添加 role
ludus ansible role add rufflabs.ludus_crushftp_cve_2025_31161
# 更新你的 range config
ludus range config get > config.yml
# 编辑 config.yml 以添加 role(参见上方示例)
ludus range config set -f config.yml
# 部署(如果 range 已经运行,则仅部署 role)
ludus range deploy -t user-defined-roles
```
## 独立 Playbook 示例
```
- hosts: crushftp_hosts
roles:
- rufflabs.ludus_crushftp_cve_2025_31161
```
## 测试漏洞利用
部署完成后,从你的攻击虚拟机进行测试:
```
# Nuclei 检测
nuclei -u http://:8080 -t CVE-2025-2825.yaml
# Immersive Labs PoC(创建后门管理员账户)
python3 cve-2025-31161.py \
--target_host http://:8080 \
--target_user crushadmin \
--new_user backdoor \
--password backdoor123
```
## 工作原理
1. **下载** — 从 `rufflabs/crushftp_cve-2025-31161` GitHub Releases 获取 `CrushFTP10_10.8.0_4.zip`(如果不可用,则回退到 Docker Hub registry API)。下载 Adoptium JDK 21。两者都缓存在 Ludus 主机的 `/opt/ludus/resources/crushftp/` 目录中。
2. **安装** — 将缓存的文件复制到 Windows 目标,并解压 CrushFTP 和 JDK。
3. **配置** — 创建 `crushadmin` 账户,安装 Windows 服务,设置 `JAVA_HOME`,并开放防火墙端口。
## 相关仓库
| 仓库 | 用途 |
|------------|---------|
| [rufflabs/crushftp_cve-2025-31161](https://github.com/rufflabs/crushftp_cve-2025-31161) | 将存在漏洞的 CrushFTP 二进制文件作为 GitHub Release 资产托管 |
| [rufflabs/ludus_crushftp_cve-2025-31161](https://github.com/rufflabs/ludus_crushftp_cve-2025-31161) | 此 role —— 用于部署的 Ansible/Ludus 自动化 |
## 参考
- [NVD: CVE-2025-31161](https://nvd.nist.gov/vuln/detail/CVE-2025-31161)
- [ProjectDiscovery 文章](https://projectdiscovery.io/blog/crushftp-authentication-bypass)
- [Huntress 分析](https://www.huntress.com/blog/crushftp-cve-2025-31161-auth-bypass-and-post-exploitation)
- [Exploit-DB PoC](https://www.exploit-db.com/exploits/52295)
- [Immersive Labs PoC](https://github.com/Immersive-Labs-Sec/CVE-2025-31161)
## 许可证
MIT
## 作者信息
此 role 由 [rufflabs](https://github.com/rufflabs) 为 [Ludus](https://ludus.cloud/) 创建。
标签:Ansible, CISA项目, CrushFTP, 漏洞环境, 特权提升, 系统提示词, 自动化部署