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

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

内容简介: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/


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

查看所有标签

猜你喜欢:

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

网站项目管理

网站项目管理

[美] 阿什利·弗里德莱因 / 李保庆、杨磊、王增东 / 电子工业出版社 / 2002-11 / 32.00元

这本书全方位地介绍了如何建立和最终交付一个具有很高商业价值的成功网站,讲解从项目管理的角度入手,撇开烦琐的技术细节,更加关注Web项目实施中诸如成本、进度、工作范围等问题,涉及了一个商业网站在实施过程中可能遇到的所有管理细节。书内附国际一流网站开发专家的深邃见解;涵盖了网络项目管理的关键原则及案例研究;通过友情链接,还为读者提供了模板、论坛、术语表、相关链接以及有关因特网知识的测验题。一起来看看 《网站项目管理》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具