草庐IT

ysoserial-URLDNS

全部标签

【Java安全】ysoserial-URLDNS链分析

前言Java安全中经常会提到反序列化,一个将Java对象转换为字节序列传输(或保存)并在接收字节序列后反序列化为Java对象的机制,在传输(或保存)的过程中,恶意攻击者能够将传输的字节序列替换为恶意代码进而触发反序列化漏洞。其中最经典的反序列化漏洞利用工具——ysoserial,下面就分析学习一下ysoserial中的URLDNS链,以便更好地理解反序列化漏洞。ysoserial简单分析下载ysoserialhttps://github.com/frohoff/ysoserial项目源码,导入IDEA,并在pom.xml中搜索mainclass,寻找程序的入口点在程序运行之前,先设置两个参数(

Java反序列化漏洞-URLDNS链分析

目录一、前置知识反射二、分析1.URL2.HashMap3.解决一些问题反射修改字段值三、POC四、利用链一、前置知识菜鸟教程Java序列化Java安全-反射URLDNS链的作用就是在目标主机中可能存在反序列化输入的数据的地方,传入序列化后的URLDNS利用链,如果目标主机解析了这个URL地址,那么证明该处存在反序列化数据的行为。然后就可以进一步尝试其他反序列化漏洞了。反射下面是两个本文中要用到的反射方法:反射获取类对象:Students=newStudent();//方法1Classclazz=s.getClass();//方法2Classclazz2=Student.class;反射修改私

JAVA URLDNS链分析利用

JAVAURLDNS链分析利用认java反序列化知识Java原生链序列化:利用Java.io.ObjectInputStream对象输出流的writerObject方法实现Serializable接口从而将对象转化为字节序列用于对对象数据进行存储转移举例:packageorg.example;//对象importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.Serializable;publicclassPersonimplementsSerializable{privatetransientStringna

[java安全]URLDNS

文章目录[java安全]URLDNS前言HashMapURLURLStreamHandler调用过程调用链流程图POC[java安全]URLDNS前言URLDNS利用链是一条很简单的链子,可以用来查看java反序列化是否存在反序列化漏洞,如果存在,就会触发dns查询请求它有如下优点:使用java内置类构造,对第三方库没有依赖在目标没有回显的时候,可以使用DNS请求得知是否存在反序列化漏洞在ysoserial下生成URLDNS的命令为:java-jarysoserial.jarURLDNS"http://xxx.dnslog.cn"在学习URLDNS之前,我们需要了解一些java内置的类Hash

Java反序列化:URLDNS的反序列化调试分析

URLDNS链子是Java反序列化分析的第0课,网上也有很多优质的分析文章。笔者作为Java安全初学者,也从0到1调试了一遍,现在给出调试笔记。一.Java反序列化前置知识Java原生链序列化:利用Java.io.ObjectInputStream对象输出流的writerObject方法实现Serializable接口,将对象转化成字节序列。Java原生链反序列化:利用Java.io.ObjectOutputStream对象输入流的readObject方法实现将字节序列转化成对象。测试源码如下,此部分源码参考了ol4three师傅的博客:packageserialize;​importjava

URLDNS链

听说这个链子是最简单的链子之一了,但是却是来来回回看了好多遍才勉强看明白。在ysoserial中我们可以看见链子是这样的:*GadgetChain:*HashMap.readObject()*HashMap.putVal()*HashMap.hash()*URL.hashCode()简单流程:1.HashMap接收一个类O(URL类)2.类O(URL类)的hashCode()后续的一串链子可以发起DNS请求3.HashMap的readObject刚好可以调用O.hashCode();现在我们来编写类来观察如何触发DNS请求packagepacket1;importjava.io.FileOut

【Web安全】Ysoserial 简单利用

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

ysoserial CommonsCollections2 分析

在最后一步的实现上,cc2和cc3一样,最终都是通过TemplatesImpl恶意字节码文件动态加载方式实现反序列化。已知的TemplatesImpl->newTransformer()是最终要执行的。TemplatesImpl类动态加载方式的实现分析见ysoserialCommonsCollections3分析中的一、二部分。TemplatesImpl->newTransformer()的调用通过InvokerTransformer.transform()反射机制实现,这里可以看ysoserialCommonsCollections1分析中的前半部分内容。cc2是针对commons-coll

ysoserial CommonsCollections2 分析

在最后一步的实现上,cc2和cc3一样,最终都是通过TemplatesImpl恶意字节码文件动态加载方式实现反序列化。已知的TemplatesImpl->newTransformer()是最终要执行的。TemplatesImpl类动态加载方式的实现分析见ysoserialCommonsCollections3分析中的一、二部分。TemplatesImpl->newTransformer()的调用通过InvokerTransformer.transform()反射机制实现,这里可以看ysoserialCommonsCollections1分析中的前半部分内容。cc2是针对commons-coll

YsoSerial 工具常用Payload分析之CC3(二)

这是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
12