小楼昨夜又春风,你知ysoserial-Gadget-URLDNS多少?

本文详细介绍了Java反序列化漏洞中的ysoserial工具及其URLDNS gadget,讲解了如何利用该gadget验证目标是否存在反序列化漏洞,通过分析源码和复现漏洞,揭示了整个gadget链的工作原理,包括HashMap、URL、URLStreamHandler等类的交互,以及如何避免DNS解析重复。
摘要由CSDN通过智能技术生成

前言

文章首发:https://www.sec-in.com/article/299
  2015年Gabriel Lawrence(@gebl)和Chris Frohoff(@frohoff)在AppSecCali大会上提出的利用Apache Commons Collections来构造命令执行利用链,随后发布ysoserial工具,从此打开Java安全的蓝海。
   利用链(gadget chains),俗称gadget。通俗来说就是一种利用方法,它是从触发位置开始到执行命令的位置结束,也可以说是漏洞验证方法(POC)。
   使用方法,GitHub下载jar包或者git源码自己编译。

java -jar ysoseial.jar URLDNS “http://baidu.com”

再将生成号POC发送目标,如果目标存在反序列化漏洞,并且满足利用链条件,则命令将会被执行。

ps: 本文实验代码都上传JavaLearnVulnerability项目,为了让更多人知道,麻烦动动小手star一下。


URLDNS

   URLDNS是其中的一个gadget的名字,此gadget不能执行命令,通常用来验证目标是否存在反序列化漏洞。URLDNS gadget十分适合用来验证目标是否存在反序列化漏洞。

  • 此gadget完全使用Java内置的类构造,无需第三方库支持。
  • 如果目标没有回显,通过DNS解析请求是否存在来判断存在反序列化漏洞。

漏洞分析

打开https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/URLDNS.java查看源码,但笔者这里使用自己改写的源码来分析此gadget链。

package samny.serializable;


import samny.util.Reflections;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Field;
import java.net.InetAddress;
import java.net.URL;
import java.net.URLConnection;
impor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值