Solar 应急响应赛 3 月 Writeup
- 时间:3 月 29 日 10:00~18:00
- 附件大小:1 GB 两层压缩,解压后 > 40 GB
简单总结
题目总体还好,基本上是经典的取证类型(难度中等左右)。因为 Flag 格式没有明确的问题,耽误了一点时间。
窃密排查个人觉得思路会比较清奇,可能是凭据的重复利用,或者是对数据解码解密。
逆向题看起来应该挺简单的(随机数种子+其他),不过反编译代码看着确实头疼,就没咋做(其实多花点时间能做上的吧)。
【签到】和黑客去Battle把!
固定 15 分的签到题,一开始还以为这个 AI 很难对付,后来发现密钥直接给出来了:
果然是签到啊,之前被这类题搞出点阴影过,无语。
窃密排查-1
根据题目提示使用 SSH 连接到靶机,位于 root 用户的根目录。使用 ls -la
列出所有文件,发现有一个隐藏的 .megaCmd
目录,进入可以发现一些日志。直接输出可以获得黑客登录的账户:
此处即 25solar3abc@habenwir.com
。
溯源排查-1~3
挂载检材后,先行检查 root 与用户目录,可发现可疑的删除文件:
这些文件的内容完全相同,均为 Systemd 服务配置文件,指向一个可执行程序 /usr/local/systemd/journaled
。
[Unit]
Description=journaled
ConditionFileIsExecutable=/usr/local/systemd/journaled
[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/local/systemd/journaled
Restart=always
RestartSec=120
EnvironmentFile=-/etc/sysconfig/systemd-journaled
[Install]
WantedBy=multi-user.target
系统日志服务正确的写法是 systemd-journald
,这里明显不正常,将 /usr/local/systemd/journaled
文件提取出来,用在线沙箱分析:
可见其尝试连接了 156.238.230.167
IP地址,对应此题答案。外连程序的绝对路径 /usr/local/systemd/journaled
对应第二题答案。
为了找到后门的启动服务,可以搜索 journaled
,最终在 /etc/systemd/system
找到了完全相同的、名为 systemd-journaled.service
的服务文件。
溯源排查-4
根据题目中的“业务系统已被删除”,找到根目录下被删除的 nacos
目录,以及一个被删除的压缩包 nacos-server-2.2.2.tar.gz
。
因此本题答案是 flag{nacos}
。
溯源排查-6
结合找到的 nacos
压缩包版本为 2.2.2,查找 2.2.2 及以后修复的漏洞。
我的洞呢
笔者在下午查洞的时候,发现关于 NacOS 的 CVE 漏洞极其少见,精准匹配的只能找到一个 CNVD 的洞;稍微扩展一点搜 Tomcat、RCE、内存马,都对不上,这是相当奇怪的一件事。是我查的方法不对吗...
同时在 /tmp
目录下发现可疑的 nacos_data_temp
文件,提取出来进行分析,发现 nacos_data_temp
是一个恶意注入的 Java 包。
defineClass
里是一段 Base64 编码信息,我们解码一下并反编译,得到一个 Webshell 后门:
审计代码的 doFilter
方法,发现:
- 需要
Referer
设置为https://www.google.com/
才能生效 x-client-data
支持设置为cmd/rebeyond/godzilla
三种,并有不同的适配
结合开源项目搜索,找到了 c0olw/NacosRce 工具与这样的特性吻合。故答案为 flag{https://github.com/c0olw/NacosRce}
。