Fastjson

简介

        Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

        Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

        Fastjson 源码地址:https://github.com/alibaba/fastjson

        Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

特性

        1 提供服务器端、安卓客户端两种解析工具,性能表现较好。

        2 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

        3 允许转换预先存在的无法修改的对象(只有class、无源代码)。

        4 Java泛型的广泛支持。

        5 允许对象的自定义表示、允许自定义序列化类。

        6 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)

漏洞

远程代码执行漏洞1(CNVD-2017-02833 )

介绍

        fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

影响版本

        Fastjson<1.2.24

防护

        更新fastjson版本

远程代码执行漏洞2(CNVD-2019-22238)

介绍

        fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。

影响版本

Fastjson<1.2.48

防护

        更新fastjson版本

远程代码执行漏洞3

介绍

        FastJSON <= 1.2.68 存在远程代码执行漏洞,可直接获取到服务器权限。漏洞成因是Fastjson autotype开关的限制可被绕过,然后链式地反序列化某些原本不能被反序列化的有安全风险的类。

影响版本

        FastJSON <= 1.2.68

防护

        更新fastjson版本,关闭autotype改用白名单,更新jdk(不太现实)

远程拒绝服务漏洞

介绍

        Fastjson多个版本存在远程拒绝服务漏洞,Fastjson 1.2.60版本以下存在字符串解析异常,可导致远程拒绝服务攻击。攻击者即可通过精心构造的请求包对使用Fastjson的服务器造成远程拒绝服务攻击,可导致服务器宕机。

影响版本

        fastjson <1.2.60

        fastjson sec版本>=sec06

防护

        更新fastjson版本

指纹识别

        若有报错回显,可以故意构造不完整json请求,返回的数据包会进行报错。

        若无报错回显,利用dnslog进行回显

总结

        为保证安全,尽量使用、更新最新版本的fastjson。