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攻击, 云资产清单, 内存破坏, 漏洞分析, 网络安全, 路径探测, 逆向工具, 逆向工程, 隐私保护