- 【CVE-2018-1000006】
- 参考资料:
- 后来,补上的一篇,考古资料:
- Electron 自定义协议命令注入(CVE-2018-1000006)分析和 Url Scheme 安全考古
- 讲了很多,其它的【奇门相关方法】。
- 可直接上手复现,的Demo环境:
- Electron,在【1.8.2】及更早版本,在【协议处理程序】中 存在漏洞。
- 特别是,在 Win10 、Win7 、 Windows 2008 上,运行的Electron程序,可以【注册自定义协议处理程序】
- 如果,用户点击【特制URL】,则会欺骗执行,任意命令。
- 在网上,搜索【CVE-2018-1000006】,详细查看这篇文章:
- gpu-launcher
- 使用,类似于【renderer-cmd-prefix】。
- 主要针对 Windows 平台有效:
- 双引号的闭合
- 翻注册表,发现,其实是在做【闭合系统底层的一个双引号】。
- 根源就在于:
- Windows使用了【双引号】,来传参。
- 【Win32】程序处理本地文件和【url】的打开是类似的,甚至可以使用同一套【Win32 API】 —— ShellExecute(Ex)
- 打开一个本地文件:
ShellExecuteW(NULL, L"open", L"c:\\hello.txt", NULL, NULL , SW_SHOW );
- 通过系统默认浏览器访问淘宝:
ShellExecuteW(NULL, L"open", L"https://www.taobao.com", NULL, NULL , SW_SHOW );
- 可以看到除了 lpFile 之外其他参数可以保持完全一致。
- ShellExecuteExW 也是类似的情况。
- Chromium 默认使用多进程模式。渲染器、插件进程的路径和参数可以在 Chromium 命令开关中自定义。
- CVE-2018-1000006 公开的 poc 利用的是 --gpu-launcher,经过巴斯光年实验室的分析,以下参数均支持执行任意命令
- --renderer-cmd-prefix
- --gpu-launcher
- --utility-cmd-prefix
- --ppapi-plugin-launcher
- --nacl-gdb
- --ppapi-flash-path 和 --ppapi-flash-args
- 当然,如果嫌弃 gpu 进程和 renderer 进程的沙箱,我们还有 【--no-sandbox】。
- Electron的修复处理:
- 对【参数接收】和【子进程运行】,进行了检查
- 增加了【黑名单】验证:
- 黑名单列表
- 对于【非安全访问路径】的一个限制
- _
- 历史总结:
- 根据【蚂蚁金服巴斯光年实验室】的回顾,历史上,已经出现了多次【url scheme】的漏洞。
- MS07-061 (CVE-2007-3896)
- 两个变体:CVE-2007-3896, CVE-2007-3845
- MS10-007 (CVE-2010-0027)
- CVE-2007-3670
- CVE-2007-3186
- QQ软件,2012年报出漏洞
- HITB 2017 ,一个游戏客户端通过自定义 url scheme 执行命令的漏洞
- 总结:
- 历史总是在一遍遍重演。
- 比如 2008年 的【CVE-2007-3670】,和【CVE-2018-1000006】,简直是【一模一样的复刻】。
- 实战:
window.location = 'exodus://aaaaaaaaa" --gpu-lancher="cmd" --aaaaa='
- 更深入的讲解:
- 【CVE-2018-8495】,详解
- 参考资料:
- 【url scheme】的基本介绍:
- 创建【url scheme】的方式:
- 写注册表。
- 或者,使用【异步可插拔协议】。
- 安全隐患,简单介绍
- 【操作系统】层面的问题:
- 【Windows XP】+【IE7】
mailto:test%../../../../windows/system32/calc.exe".cmd
- 【浏览器】的【参数注入】
- 【Windows】+【IE】,即《Electron 自定义协议命令注入(CVE-2018-1000006)》
test:var" "bar
- PoC:
chybeta://?" "--no-sandbox" "--gpu-launcher=cmd.exe /c start calc
- 最终生成的【启动参数】:
electron.exe "//?" "--no-sandbox" "--gpu-launcher=cmd.exe /c start calc"
- 【Windows】+【Edge】,即Edge 远程代码执行(CVE-2018-8495)。
- 在 Edge 中,居然可以打开一些不合法的 url scheme(没有包含 URL Protocol 字段),比如 WSHFile 项:
- 恰恰 WSHFile 项指向了 wscript.exe
- 这个应用程序非常熟悉是Windows 内置的脚本解释器
- 脚本可以接收参数并用于执行:
- 漏洞作者最终找到:
C:\Windows\WinSxS\amd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.17134.48_none_c60426fea249fc02\SyncAppvPublishingServer.vbs
- 该脚本文件支持接收参数,并且会将命令直接拼接到字符串中
- 然后通过 powershell 进行执行。
psCmd = "powershell.exe -NonInteractive -WindowStyle Hidden-ExecutionPolicy RemoteSigned -Command &{" & syncCmd & "}"
- 此外,额外的发现:
- 在注册表 HKEY_CLASSES_ROOT 还发现了和 WSHFile 类似的 url scheme,都指向 wscript.exe,同样也可以触发远程代码执行。包括:
- wshfile
- wsffile
- vbsfile
- vbefile
- jsefile
- 以及,另外的可执行脚本:
- 还有在 C:\Windows\System32\ 下也存在 【SyncAppvPublishingServer.vbs】,同样也可以利用,并且比漏洞作者所提供的更加可靠。
- 除了 SyncAppvPublishingServer.vbs 这个文件, 在 C:\Windows\System32\Printing_Admin_Scripts\zh-CN 下的 【pubprn.vbs】 也同样可以触发代码执行。
- 【应用程序】的问题
- 2017 年 12 月,macOS 上的 helpViewer 应用程序
- 由 XSS 造成文件执行的漏洞(CVE-2017-2361)
- 构造的PoC如下:
document.location = "help:///Applications/Safari.app/Contents/Resources/Safari.help/%25252f..%25252f..%25252f..%25252f..%25252f..%25252f..%25252f/System/Library/PrivateFrameworks/Tourist.framework/Versions/A/Resources/en.lproj/offline.html?redirect=javascript%253adocument.write(1)";
- 在这个漏洞的利用过程中,可以发现操作系统和浏览器并没有出现问题,而是通过 url scheme 打开的应用程序【helpViewer】出现了问题。
- 几个巧妙的点:
- 利用 url scheme 中的 help 协议打开应用程序 Safari.help
- 使用双重 url 编码绕过 helpViewer 对路径的检查,打开一个可以执行 JavaScript 的页面
- 使用 helpViewer 的内置协议 x-help-script 打开应用程序(PoC不包含)
- 应该是隐藏了,部分细节???
- 那怎么办?
Created
May 21, 2021 09:40
-
-
Save hanshou101/c2c07494f10a33741da2bb2d9d775d82 to your computer and use it in GitHub Desktop.
【CVE-2018-1000006】.md
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment