URLDNS利用链分析-urldns利用链分析

slug
series-status
status
summary
date
series
type
password
icon
tags
category

URLDNS

利用效果

序列化部分

代码

效果

notion image

反序列化部分

代码

效果

notion image

原理

核心点

该漏洞的关键点在于URL类重写了继承自Object类的hashcode方法,并在计算哈希的过程中会将域名解析为ip,就在这一步导致了dns记录的产生
notion image

利用方式

虽然目前我们知道了调用URL类的hashcode方法可以产生dns请求,但是还缺少一个利用点,因为URL的readObject方法中并没有调用其hashcode方法。
而使用hashcode方法最多的自然是hashmap结构,而我们进入hashmap类的源码可以看到,其readObject方法在最后调用了hash方法:
notion image
而在hash方法内部则会调用对象的hashcode方法:
notion image
此时则会调用URL对象的hashcode方法,顺利的话则会产生dns记录。

一个要注意的点

因为URL的hashcode方法在进行hashcode之前会先对自身的hashcode属性的值进行判断,只有值为-1时才会执行这个方法:
notion image
因此,要保证在反序列化的时候URL对象的hashcode属性为-1。
此时就会碰到另一个问题,因为hashmap在put的时候会自动计算对象的哈希值,并赋值,此操作会导致URL对象在反序列化时hashcode属性不为-1,因此这也就是我们的序列化部分为什么在序列化之前利用反射操作将url对象的hashcode属性设定为了-1:
notion image
也许有同学会注意到我们在进行put操作之前也先为url的hashcode赋值了一个非-1的值,这一操作则是为了保证在执行这段代码的时候服务器不会去解析我们传入的dns域名,避免产生冗余的dns日志信息。
Loading...

尚未开始
更新中
近期核心
已完结
已弃更

© River 2021-2025