常用组件hutool的潜在Gadget分析

2025-04-15 1 0

动态代理

hutool介绍页面中涉及了hutool对JDK动态代理的封装支持

https://github.com/dromara/hutool

查看在组件hutool下的InvocationHandler实现

其中存在有四个类对其进行了实现,具体如下:

常用组件hutool的潜在Gadget分析插图

分别查看这四个类的invoke方法实现,存在有以下利用的可能

JdkInterceptor

常用组件hutool的潜在Gadget分析插图1

在其invoke方法的实现中,其能够反射调用代理类的对应方法,这个类和在spring-aop中的一个比较常用的代理类JdkDynamicAopProxy的作用相同,均能够反射调用代理对象的方法,下图为JdkDynamicAopProxy#invoke的实现

常用组件hutool的潜在Gadget分析插图2

  1. 这类代理类在JSON1链中也存在身影

  2. 同样在https://mp.weixin.qq.com/s/gl8lCAZq-8lMsMZ3_uWL2Q文中绕过高版本的getter触发问题是,也采用了代理类的方式进行绕过,类似的,这里我们也可以利用JdkInterceptor类进行绕过

    常用组件hutool的潜在Gadget分析插图3

    可将其换成JdkInterceptor类

  3. 还有就是在处理jackson getter触发不稳定是,通过代理目标对象进行更稳定的getter触发

    常用组件hutool的潜在Gadget分析插图4

    同样可以替换成JdkInterceptor类进行处理

  4. ...

JDBC

其同样存在有数据库相关支持,全局搜索getDataSource调用

在hutool组件中存在有15个类存在getDataSource方法的实现

常用组件hutool的潜在Gadget分析插图5

AbstractDSFactory

常用组件hutool的潜在Gadget分析插图6

这里将会调用createDataSource创建一个数据源

常用组件hutool的潜在Gadget分析插图7

核心是

  1. setting属性中取出数据库的相关配置config

  2. 从获取的数据库相关配置中获取键为url或者jdbcUrl的值,作为后续JDBC连接的JDBC连接串

  3. 使用createDataSource进行DataSource对象的创建

  4. 并将其包装成DataSourceWrapper对象,后续将会调用其getConnection方法进行数据库的连接

寻找该抽象类的实现:

常用组件hutool的潜在Gadget分析插图8

  1. BeeDSFactory:需要存在有beecp依赖

  2. C3p0DSFactory:需要有c3p0的依赖

    后续可以通过调用ComboPooledDataSource#getConnection方法触发JDBC连接

    常用组件hutool的潜在Gadget分析插图9

  3. DbcpDSFactory:需要具有dbcp2依赖

    后续通过BasicDataSource#getConnnection触发JDBC连接

  4. ....

  5. JndiDSFactory:不需要三方依赖

    常用组件hutool的潜在Gadget分析插图10

    从传入的Setting


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

【内网渗透基础(一)】信息收集
微软警告:Windows Server 2025 重启可能导致部分域控制器连接中断
打靶日记——pWnOS1
谷歌Chrome 136将修复存在20年的已访问链接隐私漏洞
2025年CISO应对勒索软件威胁指南
爬虫自动化之定制浏览器随机指纹

发布评论