Fastjson
简介
Fastjson是阿里的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
Fastjson提供了autotype功能,可通过修改@type的值,反序列化为指定类型,而fastjson在反序列化中或设置和获取类中属性,如果类中存在恶意方法则会导致代码执行等。
注入方法
JNDI Reference 配合 RMI
JNDI Reference 配合 LDAP
一般见到json格式的数据,有一定可能性是fastjson
在测试中某医院登陆处是使用fastjson进行验证
可构造payload
升级方案
升级到最新版本1.2.69或者更新的1.2.70版本。
1.2.69https://github.com/alibaba/fastjson/releases/tag/1.2.69
1.2.70https://github.com/alibaba/fastjson/releases/tag/1.2.70
如果遇到兼容问题,原地升级sec10版本。
1.1.15~1.1.31->1.1.31.sec10
1.1.32~1.1.33->1.1.33.sec10
1.1.34->1.1.34.sec10
1.1.35~1.1.46->1.1.46.sec10
1.2.0~1.2.2->1.2.2.sec10因为1.2.3之后的版本Map是没有排序输出的,如果不关注这个兼容问题,升级到1.2.70
1.2.3~1.2.7->1.2.7.sec10因为1.2.7使用最多特别提供,也可以直接使用1.2.8.sec10
1.2.8->1.2.8.sec10
1.2.9~1.2.29->1.2.29.sec10
1.2.30~1.2.48->1.2.48.sec10
1.2.49~1.2.68->1.2.69或1.2.70中间有很多sec10小版本,建议直接升级到1.2.69或1.2.70,如果遇到兼容再考虑sec10版本
如果还遇到其他兼容问题,这里有更多的sec10版本https://repo1.maven.org/maven2/com/alibaba/fastjson/
fastjson加固
fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可一定程度上缓解反序列化Gadgets类变种攻击(关闭autoType注意评估对业务的影响)
开启方法参考: