您当前的位置: 首页 >  json

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Fastjson 代码执行 CVE-2022-25845

合天网安实验室 发布时间:2022-07-21 15:16:00 ,浏览量:0

漏洞简介

  Fastjson 代码执行漏洞,该漏洞允许攻击者绕过 Fastjson 中的"AutoTypeCheck"机制并实现远程代码执行

  影响版本:1.2.80及以下版本,即, java.lang.reflect.Type) 

会检测目标类中是否属于Throwable 的扩展,之后就会调用 

ThrowableDeserializer.deserialize()

  所以初步得出结论,如果目标类属于 Throwable 的扩展类,就可以实现打开autoType的类似操作,去调用任何类

  为了验证这个猜测,我们修改一下文件

package com.example.fastjson;

import java.io.IOException;

public class Poc extends Error {
    public void setName(String str) {
        try {
            Runtime.getRuntime().exec(str);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  依然可以利用成功

  继续关注函数 

com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class, java.lang.reflect.Type) 

会调用 createException 去创建反序列化函数

  com.alibaba.fastjson.parser.deserializer.ThrowableDeserializer#createException

  最后还是在函数 

com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class, java.lang.reflect.Type) 

中实现了代码执行

  如此整个漏洞就分析完成了

漏洞修复

  官方提供了以下四种修复方式

  ● 升级到最新版本1.2.83

  ● safeMode加固

  ● 升级到fastjson v2

  ● noneautotype版本

总结反思

  整个漏洞的分析花了很多时间,根据参考文章 CVE-2022-25845 – Analyzing the Fastjson “Auto Type Bypass” RCE vulnerability 来来回回加断点调试了很久。对这个漏洞做一个自己的总结。在默认未开启 AutoType 时,Fastjson 是基于白名单的获取外部类,通过 搜索checkAutoType 发现ThrowableDeserializer#deserialze 中的调用,当然也不止这一处,只是这处能进一步的利用,通过满足类属于 Throwable 的扩展类就可以触发,最后实现代码执行。但是这个代码在实际场景中的利用要求较为苛刻,首先满足类是 Throwable 的扩展类,同时其中必须有危险的 set 方法。

更多靶场实验练习、网安学习资料,请点击这里>>icon-default.png?t=M666https://www.hetianlab.com 

关注
打赏
1665306545
查看更多评论
立即登录/注册

微信扫码登录

0.1045s