rufflabs/ludus_crushftp_cve-2025-31161_sim
GitHub: rufflabs/ludus_crushftp_cve-2025-31161_sim
为 CrushFTP CVE-2025-31161 漏洞靶场添加业务数据轮换与防御者清理机制的 Ansible 角色,使渗透测试演练更加贴近实战。
Stars: 0 | Forks: 0
# Ansible Role: CrushFTP CVE-2025-31161 模拟环境 ([Ludus](https://ludus.cloud))
[ludus_crushftp_cve-2025-31161](https://github.com/rufflabs/ludus_crushftp_cve-2025-31161) 的配套角色,在存在漏洞的 CrushFTP 实例之上添加了一层真实的业务场景。
## 功能说明
**模拟业务流程** — 创建一个 CrushFTP 用户账户(`svc_fileprocessor`),其中包含每 2 分钟轮换一次的敏感数据文件,为攻击者在利用身份验证绕过漏洞后提供值得窃取的数据。
**防御者模拟** — 一个计划任务每 5 分钟运行一次,会删除任何匹配 `exfil*` 的 Windows 服务,模拟 EDR 或防御者的清理操作。渗透测试人员必须想办法绕过这一机制以维持持久化。
| 组件 | 名称 | 周期 |
|-----------|------|----------|
| 服务清理脚本 | `Invoke-ServiceCleanup.ps1` | 每 5 分钟 |
| 数据轮换脚本 | `Invoke-DataRotation.ps1` | 每 2 分钟 |
| CrushFTP 用户 | `svc_fileprocessor` | — |
| 计划任务 | `CrushFTP Service Monitor` | 每 5 分钟 |
| 计划任务 | `CrushFTP Data Processing` | 每 2 分钟 |
### 数据文件
轮换脚本会创建名为 `sensitive_data_.txt` 的文件,其中包含 `CONFIDENTIAL` 标头以及该文件名的 SHA256 哈希值。最多保留 5 个文件;当创建新文件时,会删除最旧的文件。
## 要求
- 必须首先将主 `ludus_crushftp_cve-2025-31161` 角色应用于同一个 VM。
- 在执行此角色之前,必须已安装 CrushFTP 并且服务正在运行。
## 角色变量
```
# CrushFTP install dir(必须与 main role 匹配)
ludus_crushftp_sim_install_dir: "C:\\CrushFTP"
# 模拟业务用户
ludus_crushftp_sim_user: "svc_fileprocessor"
ludus_crushftp_sim_password: "Pr0c3ss!ng2024"
# Data directory 和 rotation 设置
ludus_crushftp_sim_data_dir: "C:\\CrushFTP\\svc_fileprocessor_home"
ludus_crushftp_sim_max_files: 5
ludus_crushftp_sim_data_interval_minutes: 2
# Service cleanup 设置
ludus_crushftp_sim_cleanup_interval_minutes: 5
ludus_crushftp_sim_exfil_pattern: "exfil*"
```
## 依赖关系
必须在 `ludus_crushftp_cve-2025-31161` 之后运行。
## 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:
- ludus_crushftp_cve-2025-31161
- ludus_crushftp_cve-2025-31161_sim
role_vars:
ludus_crushftp_admin_password: "CrushAdmin123!"
ludus_crushftp_sim_password: "Pr0c3ss!ng2024"
```
## Ludus 使用方法
```
ludus ansible role add -d ./ludus_crushftp_cve-2025-31161_sim
ludus range deploy -t user-defined-roles
```
## 测试场景
部署完成后,渗透测试人员需要:
1. 利用 CVE-2025-31161 以 `crushadmin` 的身份绕过身份验证
2. 发现 `svc_fileprocessor` 账户及其数据文件
3. 通过 CrushFTP 界面窃取 `sensitive_data_*.txt` 文件
4. 尝试安装持久化机制(例如,名为 `exfil_c2` 的服务)—— 该机制每 5 分钟会被清理一次
5. 需要找到能够在清理中存活下来的持久化方法,或者以快于轮换周期的速度完成数据窃取
## 许可证
MIT
## 作者信息
此角色由 [rufflabs](https://github.com/rufflabs) 为 [Ludus](https://ludus.cloud/) 创建。
标签:AI合规, Ansible, 漏洞环境, 系统提示词, 自动化配置