0×00 导言
在本文中,我们会简单介绍反向shell和Windows Media Center 漏洞(CVE-2015-2509)漏洞,最后详细介绍该漏洞的方法。
0×01 反向shell
所谓shell,大家并不陌生,无非就是一个命令行接口罢了。如果把它按平台分类的话,基本上大体可以分为两大类:针对web级别的和针对系统级别的。此外,按照连接方式,分为主动连接和被动连接,主动连接是Bind Shell,被动连接是Reverse Shell,也就是本文所说的反向shell,具体如后文所示。
下面我们来说说主动连接和被动连接的区别。Bind Shell是用户用BSAH,将shell绑定到一个本地端口上,这样任何人都可以在本地网络中发送命令。反向shell的工作方式是远程计算机将自己的 shell发送给特定的用户,而不是将shell绑定到一个端口上。当远程机器处在防火墙等其它东西后面时,反向shell这种技术会变得非常有用。
许多时候,攻击者入侵了一台服务器后,他们会设置一个反向shell,将来他们就能通过这个shell轻松的访问这台远程计算机了,通俗的说,就是留了一个后门。
0×02 CVE-2015-2509漏洞
该漏洞是在 Windows Media Center 中发现的,下面是引自微软公司对该漏洞的介绍:
· 如果 Windows Media Center 打开经特殊设计的引用恶意代码的Media Center link (.mcl)文件,此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以获得与当前用户相同的用户权限。与拥有管理用户权限的客户相比,帐户被配置为拥有较少系统用户权限的客户受到的影响更小。
· 如果 Windows Media Center 打开引用了恶意代码的经特殊设计的Media Center 链接 (.mcl)文件,则此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以获得与当前用户相同的用户权限。那些帐户被配置为拥有较少用户权限的用户比具有管理用户权限的用户受到的影响要小。
· 要利用此漏洞,攻击者必须诱使用户在本地计算机上安装 .mcl 文件。然后,可能从受攻击者控制的位置执行 .mcl 文件引用的恶意代码。此安全更新通过更正处理 Media Center 链接文件的方式来修复该漏洞。
好了,下面开始我们介绍该漏洞的具体利用方法。
0×03 搭建漏洞利用环境
下面是本文所要用到的一些必要工具:
• Virtualbox
• Kali Linux,运行于Virtualbox之中
• Windows 7系统,运行于Virtualbox之中
需要注意的是,在连接Kali 和Windows 7的时候,连接方式应该选择“Host Only Adapter”。
0×04 测试漏洞
若想测试该漏洞的话,只需要在Windows系统上打开记事本程序,然后输入下列内容:
然后,保存文件,注意,扩展名应该选择.mcl,也就是说类型为Media Center link (.mcl)文件。
图1:新建名为calc.mcl的文件
对于像作者这样的懒人来说,还有一个更省劲的方法,就是到exploit-db下载一个相应的Python脚本,然后运行它就能得到这个POC文件了。好了,下面我们聊一聊具体步骤。
这个Python脚本的下载地址为:https://www.exploit-db.com/exploits/38151/
如果运行这个文件的话,就会生成一个名为Music.mcl的文件,不过其内容跟我们前面用记事本创建的文件是一样一样的。
图2:利用python脚本创建Music.mcl文件
好了,现在我们来运行这个文件,马上会弹出一个计算器,具体如下图所示。
图3:运行calc.mcl
0×05 弹出shell
下面,我们介绍如何利用这个漏洞。根据微软的说法,要利用此漏洞,攻击者必须诱使用户在本地计算机上安装 .mcl 文件。然后,可能从受攻击者控制的位置执行 .mcl 文件引用的恶意代码。
这是成功利用这个漏洞所需的具体步骤:
1. 攻击者必须创建一个恶意的可执行文件;
2. 这个文件必须能够通过UNC路径供恶意mcl文件下载;
3. 创建一个恶意的.mcl文件,然后将其发送给受害者;
4. 建立一个侦听程序;
5. 当受害者打开这个.mcl文件时,我们就会得到一个shell。
因此,首先要做的就是在我们的机器上创建一个恶意文件,并且使其能够通过UNC路径访问,这样的话,我们的恶意mcl文件才能下载它,并且在它被执行时返回一个反向shell。
需要注意的是,为了创建返回反向shell的恶意可执行文件,我们可以使用msfvenom的“windows/shell_reverse_tcp”有效荷载,它会侦听443端口。
此外,我还在自己的机器上(用来发动攻击的那台)创建了一个SMB共享文件。
下面展示的是将要传递给受害者的exploit.mcl文件的最终版本。
我们需要设法将这个exploit.mcl投送到被害者手里,并想办法让他打开这个文件。
配置Netcat使其侦听443端口,因为我们的有效荷载使用的就是这个端口。
图4:令Netcat侦听443端口
完成上述工作后,打开exploit.mcl文件,如下图所示。
图5:运行exploit.mcl文件
这样的话,就会在我们的Windows系统上得到一个反向shell,如下图所示。
图6:得到的反向shell
我们得到的shell所具备的权限,完全等同于该登录用户所具备的权限,就本例而言,为Administrator权限。
除了Netcat之外,我们还可以使用任何其他侦听程序,这就要看你们自己的喜好了。如果你喜欢Metasploit的话,则需要按下列步骤进行操作。
图7:利用Metasploit侦听程序收到的反向shell
如果你不喜欢Netcat的明文通信方式,那么可以选择使用ncat。
图8:使用ncat侦听程序收到的反向shell
为了将上述整个过程全部自动化,Metasploit专门为此提供了一个模块,其下载地址如下所示:
https://www.exploit-db.com/exploits/38195/
http://www.rapid7.com/db/modules/exploit/windows/fileformat/ms15_100_mcl_exe
0×06 参考资料
https://technet.microsoft.com/en-us/library/security/CVE-2015-2509.aspx#KBArticle
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2509
http://y0nd13.blogspot.my/2015/09/exploiting-cve-2015-2509-CVE-2015-2509.html
http://resources.infosecinstitute.com/exploiting-ms15-100-cve-2015-2509/