sudoand3rs0n/CVE-2025-5548
GitHub: sudoand3rs0n/CVE-2025-5548
以 CVE-2025-5548 栈溢出漏洞为案例,系统演示二进制漏洞分析方法与利用流程的教学型代码库。
Stars: 0 | Forks: 0
# 攻破 FreeFloat FTP:CVE-2025-5548 分析与利用
**Anderson Steven** — 网络安全硕士,模块 6(漏洞)
个人作业:*漏洞分析方法与利用*
## 为什么选择这个代码库
我不想仅仅提交一份“看,这就是可用的 exploit”。这个代码库
记录了我在面对内存损坏类漏洞时的工作方式:我首先会看什么,以怎样的顺序排除假设,在每个阶段
使用哪些工具以及原因。我使用 CVE-2025-5548 作为贯穿始终的案例,因为它是一个小而可控的
案例,但这个代码库的核心文档 —
[`METHODOLOGY.md`](./METHODOLOGY.md) — 并不是一篇关于“如何利用 FreeFloat
FTP”的教程,而是我在面对任何二进制文件时的推理方式,可适应其他案例。
## Bug 简介
FreeFloat FTP Server 1.0 是一款十多年前的 Windows FTP 服务器,
已停止维护,但它仍然在漏洞利用实验室中被使用,因为它的故障
如同教科书般经典:在处理某些特定协议命令时(这里我研究的是 `NOOP`,
尽管它不是唯一的),它通过 `strcpy` 将客户端发送的数据复制到栈上的固定缓冲区中,
且没有检查输入数据的长度。如果你发送的数据超过了缓冲区的容量,你就会覆盖保存在栈上的返回地址,从而控制 EIP。
在调查此 bug 的历史时,我发现了一个有趣的现象:
相同的编程错误,通过不同的 FTP 命令(`USER`、`PASS`、
`HOST`、`NOOP`...)触发,最终被记录为多个不同的 CVE
(CVE-2025-5548、CVE-2025-5667、CVE-2025-5220、CVE-2025-5075...)。我在根因分析中对此进行了更
详细的讨论,但我得到的启发是,统计 CVE 数量并不等同于统计漏洞数量:在所有这些背后,只存在单一的实现错误。
## 组织结构
- [`METHODOLOGY.md`](./METHODOLOGY.md) — 核心文档:我的分析与
利用方法论,逐阶段介绍了我在每个阶段使用的工具和思维方式,
以及我处理未知漏洞(0-day)的方法。
- [`00-Environment/`](./00-Environment/README.md) — 我如何搭建实验室
(受害机 Windows、攻击机 Linux、安装的软件、网络配置)。
- [`01-Vulnerability-Analysis/`](./01-Vulnerability-Analysis/README.md) — 二进制
诊断:错误在哪里以及为什么会发生,包含静态逆向工程。
- [`02-Exploitation/`](./02-Exploitation/README.md) — 记录了逐步进行的完整漏洞利用
过程,以及我在每个阶段使用的脚本。
- [`03-0day-Approach/`](./03-0day-Approach/README.md) — 我将如何着手寻找
尚未发现的漏洞:fuzzing、diffing、reversing、环境。
- `images/` — 实验室截图,每个部分一个子文件夹。
## 范围与负责任的使用
所有测试均在隔离的实验室中进行(位于内部网络中的虚拟机,
未连接到第三方系统)。这些内容仅供学习
参考;并非旨在用于未获授权的基础设施。
标签:FTP协议, XXE攻击, 云资产清单, 内存破坏, 漏洞分析, 网络安全, 路径探测, 逆向工具, 逆向工程, 隐私保护