前言Java安全中经常会提到反序列化,一个将Java对象转换为字节序列传输(或保存)并在接收字节序列后反序列化为Java对象的机制,在传输(或保存)的过程中,恶意攻击者能够将传输的字节序列替换为恶意代码进而触发反序列化漏洞。其中最经典的反序列化漏洞利用工具——ysoserial,下面就分析学习一下ysoserial中的URLDNS链,以便更好地理解反序列化漏洞。ysoserial简单分析下载ysoserialhttps://github.com/frohoff/ysoserial项目源码,导入IDEA,并在pom.xml中搜索mainclass,寻找程序的入口点在程序运行之前,先设置两个参数(
Ysoserial简单利用1.Java反序列化特征2.Ysoserial流量特征3.Ysoserial攻击流程3.1找到序列化接口3.2漏洞利用3.2.1常用命令3.2.2使用案例4.Ysoserial攻击原理问题参考1.Java反序列化特征在日志中,特征通常表现为请求格式Json、xml、soap、二进制关键字:rmi、jndi、响应对应命令执行结果信息2.Ysoserial流量特征3.Ysoserial攻击流程项目地址:https://github.com/frohoff/ysoserial3.1找到序列化接口工具逐个探测例如shiro,如果有漏洞,则会返回rememberMe=delet
在最后一步的实现上,cc2和cc3一样,最终都是通过TemplatesImpl恶意字节码文件动态加载方式实现反序列化。已知的TemplatesImpl->newTransformer()是最终要执行的。TemplatesImpl类动态加载方式的实现分析见ysoserialCommonsCollections3分析中的一、二部分。TemplatesImpl->newTransformer()的调用通过InvokerTransformer.transform()反射机制实现,这里可以看ysoserialCommonsCollections1分析中的前半部分内容。cc2是针对commons-coll
在最后一步的实现上,cc2和cc3一样,最终都是通过TemplatesImpl恶意字节码文件动态加载方式实现反序列化。已知的TemplatesImpl->newTransformer()是最终要执行的。TemplatesImpl类动态加载方式的实现分析见ysoserialCommonsCollections3分析中的一、二部分。TemplatesImpl->newTransformer()的调用通过InvokerTransformer.transform()反射机制实现,这里可以看ysoserialCommonsCollections1分析中的前半部分内容。cc2是针对commons-coll
这是CC链分析的第二篇文章,我想按着common-collections的版本顺序来介绍,所以顺序为cc1、3、5、6、7(common-collections3.1),cc2、4(common-collections4)。打开YsoSerialpayloadsCommonsCollections3源码:publicObjectgetObject(finalStringcommand)throwsException{ ObjecttemplatesImpl=Gadgets.createTemplatesImpl(command); //inertchainforsetup finalTr
这是CC链分析的第二篇文章,我想按着common-collections的版本顺序来介绍,所以顺序为cc1、3、5、6、7(common-collections3.1),cc2、4(common-collections4)。打开YsoSerialpayloadsCommonsCollections3源码:publicObjectgetObject(finalStringcommand)throwsException{ ObjecttemplatesImpl=Gadgets.createTemplatesImpl(command); //inertchainforsetup finalTr