fastjson反序列漏洞autoType验证和解决

2024-07-23  本文已影响0人  一只浩子

漏洞描述:fastjson在解析json过程中,支持使用autoType来实例化某一个具体的类,并通过json来填充其属性值。而JDK自带的类com.sun.org.apache.xalan.internal.xsltc.trax.Templateslmpl中有一个私有属性 _bytecodes,其部分方法会执行这个值中包含的Java字节码。

AutoType描述:FASTJSON支持AutoType功能,这个功能会在序列化的JSON字符串中带上类型信息,在反序列化时,不需要传入类型,实现自动类型识别。

漏洞验证准备

1.下载测试工具Burp Suite ,并安装; Burp Suite 社区版下载
2.dnslog在线平台; http://dnslog.cn/
3.fastjson版本1.2.83,fastjson默认autoType、safeMode的配置状态

<fastjson-version>1.2.83</fastjson-version>
/*
autoType 默认是false
safeMode 默认是false 
*/
ParserConfig parserConfig = fastJsonConfig.getParserConfig();
parserConfig.setAutoTypeSupport(false);
parserConfig.setSafeMode(false);

漏洞验证过程

打开Burp Suite默认浏览器


proxy-intercept-open browser.png

访问项目地址,并登录系统,调用接口

访问项目地址.png

Http history找到登录接口,send to Repeater


-1.png 0.png

参数准备:在dnslog在线平台获取域名,把requestBody中json替换(如图)
调用接口:返回成功,说明fastjson进行了正常反序列化过程;
结论:autoType并没有关闭,调用者可以指定类,将数据与对象进行转化,fastjson进行了正常的反序列化过程;

漏洞json.png

回到dns平台,点击Refresh Record,获取到了调用者的ip Address

ip Address.png

将fastjson的safeMode配置为true,再次调用接口

/*
autoType 默认是false
safeMode 默认是false 
*/
ParserConfig parserConfig = fastJsonConfig.getParserConfig();
parserConfig.setAutoTypeSupport(false);
parserConfig.setSafeMode(true);

接口返回失败,控制台打印结果为:JSON parse error: safeMode not support autoType : java.net.InetSocketAddress; nested exception is com.alibaba.fastjson.JSONException: safeMode not support autoType : java.net.InetSocketAddress

safeMode not support autoType,说明autoType已关闭
再次调用.png

回到dns平台,点击Refresh Record,这次并没有获取到调用者的ip


dns.png

结论:需要在代码中将fastjson的safeModel配置为true。
思考:验证其它版本,可以修改fastjson的版本号,并验证该版本是否存在autoType漏洞;

autoType漏洞其它解决方案:fastjson2.0版本

<fastjson-version>2.0.26</fastjson-version>

在fastjson saleMode、autoType默认配置下,调用接口,控制台报错:

JSON parse error: offset 46; nested exception is com.alibaba.fastjson.JSONException: offset 46

说明fastjson2.0版本在缺省配置(safeMode)下是安全的。

fastjson2.0,AutoType安全机制介绍:必须显式打开才能使用。和fastjson 1.x不一样,fastjson 1.x为了兼容有一个白名单,在fastjson 2中,没有任何白名单,也不包括任何Exception类的白名单,必须显式打开才能使用。这可以保证缺省配置下是安全的。

参考资料

FASTJSON 2 Autotype机制介绍
Fastjson反序列化漏洞1:吹吹水

Burp Suite工具的其它配置
字体配置: 字体.png
上一篇 下一篇

猜你喜欢

热点阅读