Fastjson反序列化漏洞1:吹吹水

image

Fastjson简介

Fastjson是一个Java库,可以实现json和对象之间的转换。

将数据与对象进行转化,这个操作涉及到了反序列化。

与原生的 Java 反序列化不同,FastJson 反序列化并未使用 readObject 方法,而是自定义了反序列化的过程。

通过在反序列化的过程中自动调用类属性的 setter 方法和 getter 方法

将JSON转化成对象

fastjson的格式

{"【对象名】":{
    "@type":"【类名】",
    "【成员变量名1】":【成员变量值1】,
    "【成员变量名2】":【成员变量值2】
    }
}

AutoType的作用:

fastjson提供了AutoType这种方式来指定需要还原的对象以及值 {"@type":"Java_deserialization.User","id":"66666"}其中@type对应的值就是类名,后面的内容就是成员变量名与值

同时还会在一定的条件下调用get和set方法,熟悉的配方熟悉的味道--反序列化漏洞

利用链

有3条利用链,以后补充

修复与绕过

出现漏洞之后autoTypeSupport属性默认为false,并且增加了checkAutoType()函数,通过黑白名单的方式来防御Fastjson反序列化漏洞

L; 绕过

版本< 1.2.41

com.sun.rowset.jdbcRowSetlmpl在1.2.25版本被加入了黑名单,fastjson有个判断条件判断类名是否以"L"开头、以";"结尾,是的话就提取出其中的类名在加载进来

那么在类名前后分别加上L和;就能绕过黑名单检测

[ 绕过

版本< 1.2.42

随后再次修复

会先去除一次L和;再进行黑名单判断,但是被双写绕过

之后修复了双写绕过,又遇见了和L&;类似的 [ 绕过,在类名前加上 [ 也可以绕过检测

通过严格匹配L;和[修复了漏洞

autoType开关绕过

版本1.2.48通过关闭缓存修复

在autoType关闭的前提下,先利用一个特殊类(java.lang.Class会在checkAutoType之前以常见类的身份加载进缓存)将payload加载进缓存,然后因为autoType关闭,fastjson优先去缓存寻找该类,并将该类反序列化出来(此反序列化存在漏洞)

在fastjson中有一个全局缓存,在类加载的时候,如果autotype没开启,会先尝试从缓存中获取类,如果缓存中有,则直接返回。黑客正是利用这里机制进行了攻击。

抛出异常绕过

版本v1.2.69修复,版本v1.2.68可以使用safeMode修复

在checkAutoType中,有这样一约定,那就是如果指定了expectClass ,那么也会通过校验

在fastjson中, 如果,@type 指定的类为 Throwable 的子类,那对应的反序列化处理类就会使用到 ThrowableDeserializer

而在此方法中,当有一个字段的key也是 @type时,就会把这个 value 当做类名,然后进行一次 checkAutoType 检测。且会指定expectClass,这样就绕过来检测。

且异常类中有get类型的方法,会在反序列化时直接调用达到rce

safeMode

彻底关掉相关功能,在黑白名单之前结束,在checkAutoType时抛出异常

写文件

在与黑白名单的博弈中,还衍生出了写文件的攻击形式(利用链不同)


工具&漏洞复现

环境搭建

使用vulhub搭建环境

使用插件检测

配置好相关的fastjson插件,发送json格式的POST包,burp就会自动检测

image

开启rmi服务

使用工具开启rmi服务

  • -C 参数指定恶意类执行的命令

  • -A 参数指定本机ip地址

image

发送payload

ps:如果是在本机复现,Host填写本地ip,不要写回环地址

先将数据包修改为POST请求,然后body加入带payload的json字符串

image

攻击成功

image


参考文章

从FastJson库的不同版本源码中对比学习绕过方法_fastjson如何关闭autotype-CSDN博客

fastjson-BCEL不出网打法原理分析-腾讯云开发者社区-腾讯云 (tencent.com)

干货|最全fastjson漏洞复现与绕过-腾讯云开发者社区-腾讯云 (tencent.com)

fastjson到底做错了什么?为什么会被频繁爆出漏洞? (baidu.com)

工具链接

welk1n/JNDI-Injection-Exploit: JNDI注入测试工具

https://github.com/pmiaowu/BurpShiroPassiveScan


相信国家相信党,黑客没有好下场
请遵守相关法律法规,文中技术仅用于有授权的安全测试,禁止用于非法活动!
本文章仅面向拥有合法授权的渗透测试安全人员及进行常规操作的网络运维人员。
在操作的过程中,您应确保自己的所有行为符合当地法律法规,且不得进行违反中国人民共和国相关法律的活动。
作者不承担用户擅自使用相关技术从事任何违法活动所产生的任何责任。


posted @ 2024-05-10 08:45  aixve  阅读(12)  评论(0编辑  收藏  举报