-
-
[原创]URLDNS反序列化利用链
-
发表于:
2024-8-26 22:46
5877
-
DNSLog:http://ceye.io
Java序列化payload生成:https://github.com/0ofo/Deswing
JDK1.8
1. 先在DNSLog平台获得一个域名:
2. 使用Deswing工具生成URLDNS的序列化文件:
3. 编写一段反序列化代码:
4. 执行后查看产生了DNSLog记录:
先来看反序列化后产生的是一个HashMap类型的对象,其中key为URL类型,value是一个String:
在Java反序列化中,如果目标对象定义了readObject方法,则ObjectInputStream在调用readObject方法时,也会反射调用目标对象的readObject方法。
既然我们这里反序列化出的是一个HashMap对象,那我们找找HashMap是否定义了该方法:
果然有,进入这个方法,将断点打到1397行:
这里调用了hash方法,跟进去:
继续调用key.hashCode(),跟进去:
前文提到HashMap对象的key是URL类型,所以这里是调用到了URL的hashCode方法,该方法的逻辑是:如果hashCode不等于-1,则直接返回,否则再调用handler的hashCode方法。点到hashCode的定义处可见其初始值为-1,所以这段逻辑也可理解为:如果hashCode是一个初始化值-1,则需要调用handler的hashCode方法为其赋值,如果不是-1,说明已经赋过值了,直接返回。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2024-8-27 15:39
被米龙·0xFFFE编辑
,原因: