Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2018-18912 — Easy File Sharing Web Server 7.2 中基于 SEH 的缓冲区溢出,演示经过身份验证的 HTTP POST 参数如何破坏异常处理程序链。 | Kitploit
工具/GitHubGitHub/themalwareguardian/cve-2018-18912
漏洞分析漏洞利用逆向工程ShellcodeWeb应用程序漏洞利用调试器学习与教育Payload 开发二进制利用
GitHubthemalwareguardian/cve-2018-18912

CVE-2018-18912

Easy File Sharing Web Server 7.2 中基于 SEH 的缓冲区溢出,演示经过身份验证的 HTTP POST 参数如何破坏异常处理程序链。

1176个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
分享

🐞 CVE-2018-18912:Easy File Sharing Web Server 7.2 - 基于栈的缓冲区溢出(SEH)

Easy File Sharing Web Server 7.2 中的基于 SEH 的缓冲区溢出,演示经过身份验证的 HTTP POST 参数如何破坏异常处理程序链。




📑 目录

  • 为什么这个仓库存在
  • 为什么这个漏洞有趣
  • 背景和受影响的软件
  • 关于漏洞
  • 触发崩溃
  • 漏洞利用



🎓 为什么这个仓库存在

这个仓库是我在讲授内存损坏漏洞利用时使用的教学材料的一部分(除了日常工作外,我还在不同的网络安全课程中授课,帮助培养下一代逆向工程师)。

CVE-2018-18912 是我用来让学生从普通的 EIP 覆盖过渡到基于 SEH 的漏洞利用的案例。一旦学生理解了直接覆盖返回地址的工作原理,下一步就是理解当栈被破坏到程序在返回之前触发异常时会发生什么,以及异常处理程序链如何取而代之成为攻击面。这个 CVE 清晰地展示了这一转变:溢出深度足以触及 SEH 链,利用路径遵循经典的 POP POP RETN 技术,这是每个漏洞利用开发人员都需要理解的。通过 ROP 绕过 DEP 是可选的扩展内容,供想更进一步的学生学习——相同的溢出、不同的 gadget 策略、一个难得多的问题。




💡 为什么这个漏洞有趣

该漏洞影响 Easy File Sharing Web Server 7.2,这是一个轻量级的 Windows Web 服务器应用程序,广泛用于简单的文件共享。该软件在编写时没有考虑现代安全缓解措施。从教学角度来看,这个案例特别有趣的原因在于它所涉及的多种因素组合:

  • 需要身份验证,但仅限于基本级别。 这模拟了攻击者已获取凭据的场景,这在现实世界的后渗透阶段很常见。
  • 溢出基于 SEH。 崩溃不会直接覆盖返回地址,而是破坏栈上的结构化异常处理程序(SEH)链,因此需要不同的利用技术。
  • 易受攻击的端点是 POST 请求。 使用标准 HTTP 工具即可轻松复现,任何与 Web 应用程序打过交道的人对此都不会陌生。
  • 绕过 DEP 是可选的。 在禁用 DEP 的系统上,该利用可以直接采用 SEH + 短跳转 + shellcode 的方式实现。如果启用了 DEP,同样的溢出可以扩展为使用 ImageLoad.dll 中的 gadget 构建 ROP 链,在将控制权移交给 shellcode 之前调用 VirtualProtect。

这种组合使 CVE-2018-18912 成为教授基础之外的漏洞利用开发技术的绝佳案例。




🔍 背景和受影响的软件

Easy File Sharing Web Server 7.2 是一个 Windows 应用程序,允许用户通过 HTTP 共享文件。它包含文件浏览、用户身份验证和内置论坛系统等功能。

论坛功能接受 POST 请求来创建新主题。该端点处理的表单字段之一是 author 参数。在内部,应用程序将此用户可控的值复制到固定大小的栈缓冲区中,而不验证其长度。

该漏洞于 2018 年被发现并报告。原始 PoC 在不久后发布,同时演示了崩溃和一条可用的利用链,其中包括来自捆绑的 ImageLoad.dll 模块的 ROP gadget。

关键技术细节:

  • 漏洞类型:基于栈的缓冲区溢出(SEH)
  • 受影响版本:Easy File Sharing Web Server 7.2
  • 受影响端点:POST /forum.ghp
  • 易受攻击的参数:author
  • 影响:远程代码执行



⚠️ 关于漏洞

当用户创建新的论坛主题时,Easy File Sharing Web Server 会处理指向 /forum.ghp 的 HTTP POST 请求。接受的参数之一是 author,它会被复制到本地栈缓冲区中,而没有任何长度检查。

在逆向该二进制文件时,可以观察到这个表单字段的处理程序使用了固定大小的缓冲区和不安全的复制操作。易受攻击逻辑的简化版本如下:

char author_buffer[64];

strcpy(author_buffer, user_input);

由于目标缓冲区大小固定且输入长度未经验证,在 author 字段中发送足够长的字符串会导致复制操作越过缓冲区末尾写入数据。

随着写入的数据越来越多,栈布局遭到破坏。与简单的返回地址覆盖不同,溢出会触及存储在栈上的结构化异常处理程序(SEH)链。当损坏的栈触发异常时,操作系统会遍历 SEH 链,并将控制权转移到攻击者控制的处理程序地址。

因此,利用流程遵循 SEH 覆盖技术:

  1. 长输入覆盖栈,包括 nSEH 和 SEH 处理程序指针。
  2. 内存损坏触发异常。
  3. 操作系统调用被覆盖的处理程序地址。
  4. 使用 POP POP RETN gadget 将执行流转到 nSEH 区域。
  5. 向前短跳转跳过 SEH 记录,并将执行重定向到 shellcode 区域。
  6. shellcode 运行。

这使得该漏洞比基本的 EIP 覆盖更难利用,但也更贴近现实世界的场景。




💥 触发崩溃

可以通过在向 /forum.ghp 发送的 POST 请求的 author 参数中发送长字符串来复现崩溃,前提是先用有效凭据进行身份验证。使用 Python 的示例:

import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 500

request = (
	b"POST /forum.ghp?forumid=1 HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Content-Type: application/x-www-form-urlencoded\r\n"
	b"Cookie: UserID=test; PassWD=test; SESSIONID=1234\r\n"
	b"Connection: close\r\n"
	b"\r\n"
	b"author=" + payload + b"&passwd=test&title=test&content=test&Submit=Submit\r\n"
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()

在调试器下执行时,崩溃会显示损坏的 SEH 链和访问冲突,确认用户可控的数据已覆盖异常处理程序指针。




💣 漏洞利用

这个仓库的目标不仅是演示崩溃,还要按照开发真实 SEH 漏洞利用时使用的方法论,逐步走完完整的利用过程。

为了保持主 README 的简洁,详细的利用笔记、脚本和调试器步骤放在本仓库的 Vulnerability 📂 文件夹中。

在那里你会找到用于利用此 CVE 的完整工作流程,包括:

  • 对 author 参数进行模糊测试以识别崩溃点。
  • 偏移量发现,以定位 nSEH 和 SEH 在栈上的精确位置。
  • 坏字符分析,以识别会破坏 payload 的字节。
  • 使用来自已加载模块的 POP POP RETN gadget 覆盖 SEH 链。
  • shellcode 的放置与执行。
下载工具