突然有一天,老大突然在群里说,把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