内容简介:CVE-2018-8495漏洞是攻击者利用Edge的多个漏洞,通过滥用定制的URI方案实现远程代码执行。许多用户可能知道可以再浏览器内通过mailto:test@test.test这样的URL启用默认的邮件客户端。然后会弹窗提醒用户是否要选择其他的应用,用户同意后,该应用就会运行。
CVE-2018-8495漏洞是攻击者利用Edge的多个漏洞,通过滥用定制的URI方案实现远程代码执行。
启动外部应用
许多用户可能知道可以再浏览器内通过mailto:test@test.test这样的URL启用默认的邮件客户端。然后会弹窗提醒用户是否要选择其他的应用,用户同意后,该应用就会运行。
研究人员的默认邮件应用是Outlook,从下图可以看出特定的参数发给了outlook可执行文件。所以有用户标记的字符串作为参数值传递了,很明显这里可能会出问题。但问题是:其他外部应用启用的URI方案是怎么样的?
最便捷的协议
通过注册表可以找出所有登记过的定制协议。ComputerHKEY_CLASSES_ROOT文件夹中有shellopencommand子文件夹。比如,研究人员发现ms-word有这样的子文件夹。
查看ComputerHKEY_CLASSES_ROOTms-wordshellopencommand的值,发现C:Program Files (x86)Microsoft OfficeRootOffice16protocolhandler.exe “%1″。也就是说如果用户点击指向ms-word:test的锚标签,就会执行下面的动作:
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)就是句柄。
按ok继续:
WScript.exe的动作是尝试执行用户传递过来的路径内的文件。这样的话,就会尝试定位C:WINDOWSsystem32wshfile:test,但文件并不存在。所以怎么办呢?
利用
第一个测试方法就是:路径遍历。
研究人员首先测试wshfile:test/../../foo.vbs,弹窗出现后点击ok,然后:
然后就可以指向任何目录中的任何文件,也可以在预想的位置释放文件,然后就可以远程代码执行了。
换句话说,研究人员可以植入文件但不能预测其位置。因此,研究人员推荐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视频:
参考:
ZDI Advisory: https://www.zerodayinitiative.com/advisories/ZDI-18-1136/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法设计与分析导论
R.C.T.Lee (李家同)、S.S.Tseng、R.C.Chang、Y.T.Tsai / 王卫东 / 机械工业 / 2008-1 / 49.00元
本书在介绍算法时,重点介绍用干设计算法的策略.非常与众不同。书中介绍了剪枝搜索、分摊分析、随机算法、在线算法以及多项式近似方案等相对较新的思想和众多基于分摊分析新开发的算法,每个算法都与实例一起加以介绍,而且每个例子都利用图进行详细解释。此外,本书还提供了超过400幅图来帮助初学者理解。本书适合作为高等院校算法设计与分析课程的高年级本科生和低年级研究生的教材,也可供相美科技人员和专业人七参考使用。一起来看看 《算法设计与分析导论》 这本书的介绍吧!