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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2017-0199-Fix — 通过 .hta 执行 OLE2 代码的快速修复 | Kitploit
工具/GitHubGitHub/notawful/cve-2017-0199-fix
漏洞分析漏洞利用配置审计学习与教育事件响应Archived
GitHubnotawful/cve-2017-0199-fix

CVE-2017-0199-Fix

通过 .hta 执行 OLE2 代码的快速修复

查看仓库
13269年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2017-0199 修复

通过更改 .hta 文件的默认处理程序,消除 CVE-2017-0199 执行代码的能力。通过 OLE2 (COM 对象) 调用的文件的默认处理程序独立于本地系统的默认应用程序存储,只能通过注册表更改。

基本逻辑漏洞

这是该漏洞的一个实际示例,并且按照我的理解进行说明。并非所有情况都遵循此模式,我的评估可能不正确。下一节中提供的修复方法在我测试过的情况下确实有效。

  1. 托管在 Web 服务器上的 RTF 文档将恶意超文本应用程序 (HTA) 有效负载 'cat' 到其末尾。
  2. 托管服务器响应对该文件的 GET 请求,并在标头中声明该内容是一个 HTA 文件。
  3. Microsoft Word 运行一个 OLE2 对象,从 Web 服务器获取 RTF 文档。
  4. Microsoft Word 被迫验证文件类型,因为扩展名 .rtf 与内容类型 HTA 不匹配。
  5. Microsoft Word 从文件末尾检查可识别的数据结构,并将 HTA 数据结构与 HTA 内容类型匹配。
  6. Microsoft Word 自动更正文件类型,并将其传递给 HTA 文件的 COM 处理程序 (mshta.exe)。
  7. Mshta.exe 运行文件末尾的恶意超文本应用程序代码。

COM 处理程序与系统处理程序分别存储在注册表中,以防止文件类型验证过程中出错。

基本修复

  1. 在 RegEdit.exe 中导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\DefaultIcon
  2. 打开 DefaultIcon 的高级权限
  3. 将所有者更改为 Administrators (组)
  4. 将当前用户帐户添加到安全主体列表,并分配 "完全控制" 权限
  5. 将 (Default) 键编辑为 C:\Windows\System32\notepad.exe,1
  6. 在 DefaultIcon 的高级权限中删除你的用户,并将 SYSTEM 重新分配为所有者
  7. 对 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\LocalServer32 重复步骤 1 到 6,将 (Default) 键值更改为 C:\Windows\System32\notepad.exe

这将通过将通过 OLE2 调用的 .hta 对象的默认处理程序更改为 notepad,从而消除 CVE-2017-0199 执行代码的能力。这将适用于所有调用 .hta 文件的 OLE2 实例。这会导致 notepad 打开并引发错误,但代码不会执行。

原始注册表键

root@kitploit:~
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\DefaultIcon\(Default)
	C:\Windows\SysWOW64\mshta.exe,1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\LocalServer32\(Default)
	C:\Windows\SysWOW64\mshta.exe

编辑后的注册表键

root@kitploit:~
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\DefaultIcon\(Default)
	C:\Windows\System32\notepad.exe,1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\LocalServer32\(Default)
	C:\Windows\System32\notepad.exe

环境

  • 1 台 Ubuntu 16.04.2 LTS 服务器,装有 LAMP 堆栈和 SSH 服务器
  • 1 台 Windows 10 客户端,装有 Office 365 (2016)

参考资料

  • 漏洞概念验证: https://rewtin.blogspot.ca/2017/04/cve-2017-0199-practical-exploitation-poc.html (访问日期 2017-04-17)
  • CVE-2017-0199 分析: https://www.fireeye.com/blog/threat-research/2017/04/cve-2017-0199-hta-handler.html (访问日期 2017-04-17)

经验教训

  • 不要直接编辑 HKCR。请编辑 HKCU 或 HKLM 中相应的键。
  • 您可以在获取注册表键的所有权后,将其所有权交还给 SYSTEM 或其他主体。
  • 不要乱动注册表。修改完成后,保持原样。
  • Process Monitor 具有强大的右键过滤功能,可以减少噪音。
  • Process Monitor 的查找功能可在所有字段中搜索字符串。
  • pscp.exe (Putty) 是一个命令行 SSH 文件传输工具。
  • Linux 仍然很麻烦。

结束语

对于由本缓解措施引起的任何损害或问题,或者由于 notepad 和一堆错误导致的用户困惑,我不承担任何责任。这是一个粗糙的修复,我不确定在生产环境中是否会引发更广泛的问题。一如既往,请根据您的特定环境和需求评估缓解措施。

稍后我会添加截图,展示此缓解措施实施前后的效果。此外,这可以通过脚本完成,但我在更改注册表键的权限时遇到困难,因此我会稍后处理。

下载工具