技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
hutool依赖利用链挖掘分析
1341025112991831
WEB安全
137浏览 · 2025-03-25 17:14
返回文档
hutool依赖利用链挖掘分析
前言
Hutool 是一个
Java 工具库
,提供了一系列
开箱即用的工具类
,极大地简化 Java 开发,提高代码的可读性和开发效率。它的目标是
让 Java 更简单
,类似于 Java 版的
Lodash
或
Guava
。
Hutool 由
中国开发者 looly
开发,
代码简洁、API 设计优雅
,适用于
Java 后端开发、工具开发、数据处理
等场景。
在很多反序列化中,我们经常的sink点都是调用bean的getter或者setter方法,也一直没有停止过对如何调用setter和getter的挖掘,比如我们的fastjson和jackson,但是对于hutool组件的挖掘,网上分析文章非常的少,这里也是进行一波调试分析,探究底层到底是如如何调用getter在我们的反序列化中被利用的
测试代码
PHP
复制代码
我们运行发现调用了 put 类的 getter 方法
调用探寻
我们调试分析一下
首先进入 put 方法
重点是我们的 value 对象
根据 set 方法
在这里调用了 JSONUtil.wrap(InternalJSONUtil.testValidity(value)去处理我们的对象
就是把我们的 Java 对象包装为相应的 JSON 结构
jdk 原始类判断
在 wrap 方法中会进行 isJdkClass 判断
首先获取包名,然后判断包名是否以 java 或者 javax 开头,然后还会判断是否 classloader 加载,因为原生类就是
因为是 jdk 的类会直接返回 obj.tostrng,如果不是才会进行下一步
跟进
进入我们的 map
跟进 source 的类型选择对应的 map 方法来处理
isReadableBean 检测
在调用 bean 的处理方法前会坚持当前对象是否为我们的 bean
首先判断是否有 getter 方法
首先需要判断我们的 class 是一个 isNormalClass
然后判断是否有 getter 方法
然后还要判断 hasPublicField
是否有 public 的字段
判断成功后就会进入 mapFromBean 处理
一直跟进来到 copy 方法
将 JavaBean 的属性复制到一个 Map 中,在赋复制过程中会根据 copyOptions 进行一些转换和筛选
isReadable 检测
这里会获取名称和对应的描述
会调用 isReadable
判断这个 fied 是不是 public,有没有对应的 getter 方法,还判断了 fied 是不是 TRANSIENT 修饰
如果是 public 而且有对应的 getter 方法,并且没有被 Transient 修饰才会进入下一步
来到我们的 sink 点
看这个逻辑就是非常清楚了,就是调用我们的 getter 方法
最后也算是分析清楚了
与常规调用 getter 组件区别
TemplatesImpl 类
POC
这个类是我们的老朋友之一了,但是并不能够利用它,至于原因我们来分析分析
还是一样的来到 wrap 方法
这里会进入 isJdkClass 判断
因为这个是 jdk 的原始类
返回为 null
导致直接 object.toString()
并不会进行下面的步骤,导致利用失败
LdapAttribute
这个类非常有意思,是我们的 jdk 的原生类,而且调用它的 getter 方法可以触发 jndi
看到它的 getAttributeSyntaxDefinition 方法
是可以进行 jndi 的
具体参考网上,有很多了,我们尝试利用这个
一样的到 jdk 判断
在判断中任然不可以
所以导致了利用失败
0
人收藏
0
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
飞塔防火墙漏洞深度利用及调试环境搭建
2
Linux Shellcode开发(Stager & Reverse Shell)
3
Windows Shellcode开发(x64 stager)
4
Fuzz挖掘sudo提权漏洞:一次堆溢出如何逆向分析出提权思路
5
1.6K主机全域沦陷实录:从单点突破到域控接管的终极横向渗透链
近期热点
一周
月份
季度
1
飞塔防火墙漏洞深度利用及调试环境搭建
2
Linux Shellcode开发(Stager & Reverse Shell)
3
Windows Shellcode开发(x64 stager)
4
Fuzz挖掘sudo提权漏洞:一次堆溢出如何逆向分析出提权思路
5
1.6K主机全域沦陷实录:从单点突破到域控接管的终极横向渗透链
暂无相关信息
暂无相关信息
优秀作者
1
一天
贡献值:18800
2
T0daySeeker
贡献值:18700
3
1174735059082055
贡献值:15000
4
Yale
贡献值:14000
5
1674701160110592
贡献值:13000
6
LeeH
贡献值:10000
7
MeteorKai
贡献值:9000
8
姓*户
贡献值:8600
9
熊猫正正
贡献值:8000
10
lufei
贡献值:8000
目录
hutool依赖利用链挖掘分析
前言
测试代码
调用探寻
jdk 原始类判断
isReadableBean 检测
isReadable 检测
与常规调用 getter 组件区别
TemplatesImpl 类
LdapAttribute
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板