[Java反序列化]URLDNS链分析

Posted Y4tacker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java反序列化]URLDNS链分析相关的知识,希望对你有一定的参考价值。

结果

成功触发
在这里插入图片描述

分析

利用链(来自ysoserial)

*     HashMap.readObject()
*       HashMap.putVal()
*         HashMap.hash()
*           URL.hashCode()

生成链

为了可以debug我们这样填写程序参数
在这里插入图片描述
我们采用回溯法去分析,是getHostAddress, 解析了域名,而调用这个的函数为URLStreamHandler下的hashCode
在这里插入图片描述
再往上发现hashMap的 hash方法,可以调用其他类的hashCode函数
在这里插入图片描述
这个也能被put函数简单的调用

在这里插入图片描述

因此整个调用链就出来了, 需要生成一个URLStreamHandler的对象,将其作为hashMap的key值,反序列化
但是这个是一个抽象类不能直接实例化,需要实现这个类,只能用该类的子类
在这里插入图片描述
当然还有个值得注意的地方就是,这里需要改为-1
在这里插入图片描述

利用流程

反序列化调用HashMAp的readObject方法
在这里插入图片描述
key不为null所以进入hashcode方法
在这里插入图片描述
之前设置了hashcode为-1,进入了URLStreamHandler的hashcode方法
在这里插入图片描述
在这里插入图片描述
最后
在这里插入图片描述
在URLStreamHandler中,调用了 getHostAddress, 解析了域名

参考链接

https://zhuanlan.zhihu.com/p/149416105
https://www.cnblogs.com/v1ntlyn/p/13549991.html

以上是关于[Java反序列化]URLDNS链分析的主要内容,如果未能解决你的问题,请参考以下文章

java安全——ysoserial工具URLDNS链分析

java安全——ysoserial工具URLDNS链分析

java安全——ysoserial工具URLDNS链分析

java安全——ysoserial工具URLDNS链分析

java安全——ysoserial工具URLDNS链分析

java反序列化-ysoserial-调试分析总结篇