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

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

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

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

工具目录

分类

查看所有分类
Loading categories
POC-CVE-2017-8464-OpenCalculator — 利用 .lnk 漏洞以及操作系统对 explorer.exe 和 USB 驱动器的处理机制。 | Kitploit
工具/GitHubGitHub/playboisk8/poc-cve-2017-8464-opencalculator
漏洞分析漏洞利用二进制分析Payload 开发二进制利用
GitHubplayboisk8/poc-cve-2017-8464-opencalculator

POC-CVE-2017-8464-OpenCalculator

利用 .lnk 漏洞以及操作系统对 explorer.exe 和 USB 驱动器的处理机制。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
21个月前尚未审核
分享

CVE-2017-8464 / 研究 + PoC

创建 1 个快捷方式 + 1 个包含恶意 payload 的 .DLL => 放入 USB 发送给受害者 => 受害者打开 USB => Payload 自动触发!

CVE-2017-8464.gif

根本原因

  1. 首先我们需要弄清楚这个漏洞究竟出在哪里!它源于名为 Plug-and-Play(即插即用) 的功能,操作系统会自动检测设备、分配资源并加载合适的驱动程序,使其无需重启电脑即可立即工作。当你插入 USB 并用 Windows Explorer explorer.exe 打开文件夹时,操作系统会扫描文件,以便向用户显示相应的图标图像!

  2. 从旧版 Windows 开始,Microsoft 希望指向控制面板功能(本质上是 .cpl 或 .dll 文件)的快捷方式(.lnk)能够灵活地显示动态图标。因此,Windows 的核心界面管理库 shell32.dll 设计了一个名为 CPL_LoadCPLModule 的函数。

  3. 盲目使用 LoadLibrary:为了从 Control Panel Applet(控制面板小程序)文件中获取图标,操作系统并非简单地读取一个静态图像文件,而是使用 LoadLibraryW 函数将该动态链接库直接加载到 explorer.exe 进程的内存空间中。加载完成后,它才会调用标准导出函数 CPlApplet 来获取图标并绘制到屏幕上。

LoadLibraryW.png

为了证明 LoadLibraryW 确实与上述利用链相关:

1/ 启动 x64dbg với quyền admin

2/ 附加到 explorer.exe

3/ 输入命令 bp LoadLibraryW

4/ 按 F9 让 explorer.exe 继续运行

5/ 插入 USB 将立即 hit breakpoint!

PoC 问题与解决方案

我遇到了一个问题:利用链完全没有反应,尽管尝试检查和调试各种东西,却始终找不到修复方法!之后我尝试找别人的 PoC 来跑一下,但也失败了!

示例:https://github.com/3gstudent/CVE-2017-8464-EXP

然而,当我去吃午饭再回来后,我重新找回了专注和冷静,开始思考一个问题:为什么这个人的 PoC 能生效,而拿到我的机器上就不行?好吧,我开始简单逆向一下他的 .lnk 和 .dll,结果发现了两件事!

1 / 我的 .dll 比他的长!但没关系,那不是问题!

2 / 当我把 .lnk 丢进 HxD 读取字符串时,我发现这家伙用的不是相对路径,而是绝对路径!

相对路径:../example.dll

绝对路径:O:/example.dll

him.png

好了,现在的修复方法是:我们需要知道 USB 插入受害者电脑时会被自动分配为哪个盘符,然后据此填入绝对路径,这样就能成功。因为在我的 Win7 上,插入 USB 时总是显示为 F 盘,所以我的构建语法是:

root@kitploit:~
python Make_PoC.py FakeGoogleChrome F:\Pwned.dll

Microsoft 是如何修补这一架构的?

由于这是一个属于**系统架构设计思维(Logic/Architecture Flaw)**的漏洞,而不是内存溢出漏洞,Microsoft 不得不彻底改变对控制面板的处理方式:

  • 数字签名(Code Signing): 现代操作系统强制要求由系统进程加载的 .cpl 或 .dll 文件必须具有 Microsoft 的有效数字签名,或位于受到严格保护的系统目录(如 System32)中,以避免来自 USB 的“Binary Planting”漏洞。
  • 进程隔离(Process Isolation): 新版本的 Windows 不再直接将控制面板 applet 加载到关键进程 explorer.exe [cite: 1058] 中,而是通过一个隔离的中间进程(如 dllhost.exe 或 rundll32.exe)来运行。如果 DLL 崩溃或包含恶意代码,它只会让这个中间进程崩溃,而无法控制整个用户界面系统。

参考

越南研究

  • https://github.com/TrG-1999/DetectPacket-CVE-2017-8464

PoC

  • https://github.com/3gstudent/CVE-2017-8464-EXP

构建漏洞 .lnk 的工具

  • https://github.com/nixawk/labs/blob/master/CVE-2017-8464/exploit_CVE-2017-8464.py
下载工具