突然有一天,老大突然在群里说,把fastjson 包升级到1.2.60,我一脸蒙蔽,听说有重大安全漏洞,就赶紧升级完提交测试了。

今天刚好有空,赶紧上全球最大的程序员同性交友网站扒拉扒拉看看具体bug,做到心里有点B数。

话不多说,上同性交友网站截图:

撸个代码试一下,实践是检验真理的唯一标准,也是找出bug的快速方法:

public class FastJsonTest {
    public static void main(String[] args) {
        String str = "{\"g\":\"\\x";
        Object obj = JSON.parse(str);
        System.out.println(str);

写完,运行,然后报错,一气呵成。

看更新记录,这个解决方案直接加一层判断,贼6,就去老版本这里打个断点吧:

开启找你妹(debug)模式 :

 看,他来了

‘\u001A’ 表示已经读完了也就是EOF,然后看 x1  已经是结束,x2 再次为此,继续debug,

发现执行了putChar方法,执行完sp的值+1

然后继续执行,又返回scanString方法,又开始了一遍

可怕的事情来了。。。竟然进入了死循环,sp增加到sbuf.length(512)的时候,会进入if分支,开始扩容。

然后OOM。

咦,真吓人,赶紧升级1.2.60吧。

1.2.25-1.2.42 可参考:1.2.42 1.2.43可参考1.2.43 1.2.60的利用方式,实际上就是绕过了fastjson的黑名单,前提还是要autotype开启,并且存在相对应的库。 0x01 环境 maven中加入以下,然后刷新即可。 <dependency> <groupId>commons-c 背景:最近 fastjson爆出新的远程代码执行漏洞之后,赶紧督促项目组快马加鞭去修改(吐槽:真改不动,架不住项目既多又老),鉴于项目不同,依赖的 fastjson 版本也不同,本次... 2021年第一天早上,客户突然投诉说系统的一个功能出了问题,紧急排查后发现后端系统确实出了bug,原因为前端传输的JSON报文,后端反序列化成JavaBean后部分字段的值丢失了。 查看git提交历史记录,前端和后端近期并未对该功能的接口字段做任何修改,联想到上个版本升级了后端的FastJSON版本,怀疑是后端系统对FastJSON升级导致的问题。 @Data static class Label { @JSONField(name = "label_id") private Intege 前段时间,FastJson被挖出来一个漏洞,可能导致服务直接瘫痪,这个问题就严重,搞的人心惶惶,半夜拼命升级,就怕飞来横。各位大佬的公众号也纷纷转了一波,看了一圈,都是让提示大家赶紧升级。我也是很好奇,一个序列化工具那么大能耐,可以直接把服务弄瘫痪?本着好奇心,先看下最新版本是怎么修复的,上FastJson的github的官网,找到对应的commiter记录,很好找。就是它了,点进去可... com.alibaba.fastjson.JSONException: unclosed string : 问题描述: com.alibaba.fastjson.JSONException: unclosed string : String类型换换成字符串或者字符串转换成json报错; 问题原因: 1: com.alibaba.fastjson版本过低 2:被转换的字符串不规范(一般是字符串里面的引号不规范) 1:如果fastjson是1.1.36版本的需要升级(下载新版本的fastjs feign.FeignException: status 500 reading content: {“timestamp”:“2022-03-10T15:40:44.519+0000”,“status”:500,“error”:“Internal Server Error”,“message”:"(class: com/alibaba/fastjson/parser/deserializer/FastjsonASMDeserializer_40_ProductInfo, method: deserial 最先出现问题的Fastjson 1.2.24反序列化漏洞已经分析过了,产生漏洞的原理也差不多理解了 •在1.2.25之后的版本,以及所有的.sec01后缀版本中,autotype功能默认是受限的(黑白名单机制) •在1.2.68之后的版本fastjson增加了safeMode的支持。配置safeMode后,无论白名单和黑名单,都不支持autoType - 概念 - 可能出现一些新的概念,给一些参考链接吧 •FastJSON为什么要有autoType功能 •enable_auto