fastjson安全学习杂记

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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fastjson安全模式可以通过以下几种方式进行设置。首先,可以在代码中配置`ParserConfig.getGlobalInstance().setSafeMode(true)`来开启安全模式。例如,在应用程序的入口处添加以下代码: ```java public class DemoApplication { public static void main(String\[\] args) { ParserConfig.getGlobalInstance().setSafeMode(true); SpringApplication.run(DemoApplication.class, args); } } ``` 需要注意的是,如果使用`new ParserConfig`的方式,需要注意单例处理,否则可能会导致性能下降和内存泄漏。 另外一种方式是通过JVM启动参数来设置安全模式,可以在启动时加上`-Dfastjson.parser.safeMode=true`参数来开启安全模式。这样在应用程序运行时,fastjson会自动启用安全模式。 需要注意的是,安全模式的开启会完全禁用autoType功能,确保了fastjson在反序列化时不会受到恶意代码的攻击。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Fastjson开启安全模式5种方法(VIP典藏版)](https://blog.csdn.net/libusi001/article/details/117710826)[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^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [fastjson 安全漏洞](https://blog.csdn.net/regrethh/article/details/107381977)[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^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值