CVE-2018-8495 Edge远程代码执行漏洞简要分析

栏目: 编程工具 · 发布时间: 5年前

内容简介:CVE-2018-8495漏洞是攻击者利用Edge的多个漏洞,通过滥用定制的URI方案实现远程代码执行。许多用户可能知道可以再浏览器内通过mailto:test@test.test这样的URL启用默认的邮件客户端。然后会弹窗提醒用户是否要选择其他的应用,用户同意后,该应用就会运行。

CVE-2018-8495 Edge远程代码执行漏洞简要分析

CVE-2018-8495漏洞是攻击者利用Edge的多个漏洞,通过滥用定制的URI方案实现远程代码执行。

启动外部应用

许多用户可能知道可以再浏览器内通过mailto:test@test.test这样的URL启用默认的邮件客户端。然后会弹窗提醒用户是否要选择其他的应用,用户同意后,该应用就会运行。

CVE-2018-8495 Edge远程代码执行漏洞简要分析

研究人员的默认邮件应用是Outlook,从下图可以看出特定的参数发给了outlook可执行文件。所以有用户标记的字符串作为参数值传递了,很明显这里可能会出问题。但问题是:其他外部应用启用的URI方案是怎么样的?

CVE-2018-8495 Edge远程代码执行漏洞简要分析

最便捷的协议

通过注册表可以找出所有登记过的定制协议。ComputerHKEY_CLASSES_ROOT文件夹中有shellopencommand子文件夹。比如,研究人员发现ms-word有这样的子文件夹。

CVE-2018-8495 Edge远程代码执行漏洞简要分析

查看ComputerHKEY_CLASSES_ROOTms-wordshellopencommand的值,发现C:Program Files (x86)Microsoft OfficeRootOffice16protocolhandler.exe “%1″。也就是说如果用户点击指向ms-word:test的锚标签,就会执行下面的动作:

CVE-2018-8495 Edge远程代码执行漏洞简要分析

CVE-2018-8495 Edge远程代码执行漏洞简要分析

URI方案会直接传递用户标记的参数到WScript.exe。如果不清楚:

Windows Script Host provides an environment in which users can execute scripts in a variety of languages that use a variety of object models to perform tasks
Windows脚本宿主提供了一个环境,用户可以使用各种语言执行脚本,使用各种对象模型来执行任务。

可以参考: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/wscript

下面看一下如果用户从Edge导航到wshfile:test会发生什么。

首先,会出现一个弹窗要求用户选择处理该URI方案的默认应用。默认情况下,Windows Script Host (WScript.exe)就是句柄。

CVE-2018-8495 Edge远程代码执行漏洞简要分析

按ok继续:

CVE-2018-8495 Edge远程代码执行漏洞简要分析

WScript.exe的动作是尝试执行用户传递过来的路径内的文件。这样的话,就会尝试定位C:WINDOWSsystem32wshfile:test,但文件并不存在。所以怎么办呢?

利用

第一个测试方法就是:路径遍历。

研究人员首先测试wshfile:test/../../foo.vbs,弹窗出现后点击ok,然后:

CVE-2018-8495 Edge远程代码执行漏洞简要分析

然后就可以指向任何目录中的任何文件,也可以在预想的位置释放文件,然后就可以远程代码执行了。

换句话说,研究人员可以植入文件但不能预测其位置。因此,研究人员推荐Matt Nelson的一篇文章 《WSH Injection: A Case Study》 。文章中,作者用位于C:\Windows\System32\Printing_Admin_Scriptsen-USpubprn.vbs的签名的VBS文件指出,该vbs文件存在WSH注入的问题。

该VBS文件会接收2个传递来的参数,也可以伪造这些参数来诱骗VBS脚本来执行任意代码。但尝试发现已经修复了该漏洞,只有没有更新的设备受到该漏洞的影响。所以这个方法不可行,但文章提出存在许多这样的案例,所以研究人员开始搜索。

刚开始研究人员在Windows中搜索每个VBS文件,然后查看其是否接收参数。最终发现了C:\Windows\WinSx\Samd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.17134.48_none_c60426fea249fc02SyncAppvPublishingServer.vbs。

该脚本会接收多个参数,并将参数传递Powershell.exe中执行,而且不对参数进行过滤,因此可以注入任意代码。SyncAppvPublishingServer.vbs的第36行是:

psCmd = "powershell.exe -NonInteractive -WindowStyle Hidden -ExecutionPolicy RemoteSigned -Command &{" & syncCmd & "}"

因此可以修改syncCmd的值,而且Edge也会过滤引号,所以可以传递任意参数到WScript.exe中。同时,powershell可以后台执行-WindowStyle Hidden,这样就是一个完美的WSH注入向量。

此版本中的问题是特定文件夹名称取决于用户所在的Windows build。研究人员的操作系统版本是17134中,文件夹就含有10 .0.17134,如果使用的操作系统版本不同,那么文件夹中的数字就不同。

根据C:\Windows\WinSx\Samd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.17134.48_none_c60426fea249fc02SyncAppvPublishingServer.vbs

可以猜测出

C:\Windows\WinSx\SAMD921~1.48_SyncAppvPublishingServer.vbs。

这可以使攻击中使用的参数更加强大,因为都指向相同的文件。但没有用户会傻到点击OK运行Windows script host。但弹出框出现时,默认焦点就在ok按钮上,也就是说用户要做的就是按住enter键,诱使用户接收弹出框以触发漏洞利用执行。

POC

POC代码如下:

<a id="q" href='wshfile:test/../../WinSxS/AMD921~1.48_/SyncAppvPublishingServer.vbs" test test;calc;"'>test</a>
<script>
window.onkeydown=e=>{
    window.onkeydown=z={};
    q.click()
}
</script>

POC视频:

https://imgur.com/hxQPl85

参考:

ZDI Advisory: https://www.zerodayinitiative.com/advisories/ZDI-18-1136/


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

电脑报(上下册)

电脑报(上下册)

电脑报社 / 西南师范大学出版社 / 2006-12-01 / 45.00元

全套上、下两册,浓缩2006年电脑报精华文章。附录包含70余篇简明IT应用指南,覆盖软件、硬盘、数码、网络四大领域。配赠权威实用的2006-2007中国计算机年鉴DVD光盘,近1.4GB海量信息与资源超值奉献。8大正版超值软件,涵盖系统维护、系统安全、办公应用、多媒体娱乐等四大领域。微软、腾讯、友立等知名厂商,新年献礼。提供2006-2007全系列硬件、数码产品资讯,兼具知识性与资料性。官方网站全......一起来看看 《电脑报(上下册)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具