Fastjson caucho-quercus远程代码执行漏洞

Fastjson是一个Java语言编写的高性能功能完善的JSON库。 Fastjson 存在远程代码执行漏洞远程攻击者可以通过构造的攻击代码触发远程代码执行漏洞,最终可以获取到服务器的控制权限。

漏洞名称:Fastjson caucho-quercus远程代码执行漏洞

威胁等级:高危

影响范围:Fastjson<1.2.67

漏洞类型:代码执行

利用难度:简单

漏洞分析

1 Fastjson组件介绍

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。

2 漏洞描述

Fastjson远程代码执行漏洞是由于使用com.caucho.config.types.ResourceRef类,绕过了Fastjson1.2.66及以前版本的黑名单而导致。当服务端加载了存在受漏洞影响的resin依赖,并且开启了Fastjson的autotype时,远程攻击者可以通过构造的攻击代码触发远程代码执行漏洞,最终可以获取到服务器的控制权限。

3 漏洞分析

以Fastjson1.2.66 + resin-4.0.63.jar作为漏洞环境分析。传入构造好的payload,经过JSON类中的parse方法的解析入口。

Fastjson caucho-quercus远程代码执行漏洞

在DefaultJSONParser类中进行格式解析,利用特殊符号作为标志符进行数据提取。

Fastjson caucho-quercus远程代码执行漏洞

当获取到@type传入的类名后,会通过checkAutoType方法检查@type传入的类是否在黑名单中。

Fastjson caucho-quercus远程代码执行漏洞

传入的类会经过hash转换,生成hash值

Fastjson caucho-quercus远程代码执行漏洞

生成的hash值会与Fastjson设置的黑名单中的hash进行对比,如果匹配成功,直接抛出异常退出程序。

Fastjson caucho-quercus远程代码执行漏洞

通过checkAutoType检查之后,会在getClassLoader()方法中获取本地类库资源,并从中加载目标类所在的类库。

Fastjson caucho-quercus远程代码执行漏洞

继续跟进代码,通过调用TypeUtils.loadClass()方法为clazz赋值,最终返回clazz。

Fastjson caucho-quercus远程代码执行漏洞

进入map.put()方法,经过反序列化获取传入的类中属性和方法,通过JavaBean,直接为属性赋值。

Fastjson caucho-quercus远程代码执行漏洞

Fastjson caucho-quercus远程代码执行漏洞

最终在getValue()方法中调用Jndi.lookup()方法,在lookup()方法中会实例化InitialContext,并调用lookup()方法进行寻址,加载传入的链接上的恶意文件,在服务器上执行文件中的命令。

Fastjson caucho-quercus远程代码执行漏洞

Fastjson caucho-quercus远程代码执行漏洞

至此漏洞利用过程基本完成。

4 漏洞复现

搭建Fastjson1.2.66 + resin-4.0.63.jar漏洞环境,传入精心构造的json数据,让目标服务器加载远程主机上的恶意文件,从而在目标主机上执行任意代码。效果如图:

Fastjson caucho-quercus远程代码执行漏洞

影响范围

目前受影响的Fastjson版本:

Fastjson<1.2.67

解决方案

1 修复建议

1.Alibaba发布的最新版本 F astjson1.2.67已经防御此漏洞,请受漏洞影响的用户下载最新版本。

下载链接:https://github.com/alibaba/fastjson

2.Fastjson默认关闭autotype,如果项目中不需要该功能,可以删除以下代码:

ParserConfig.getGlobalInstance().setAutoTypeSupport(true);

2 深信服解决方案

深信服下一代防火墙 】可轻松防御此漏洞, 建议部署深信服下一代防火墙的用户更新至最新的安全防护规则,可轻松抵御此高危风险。

深信服 】已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。

深信服安全感知平台 】可检测利用该漏洞的攻击,实时告警,并可联动【深信服下一代防火墙等产品】实现对攻击者ip的封堵。

深信服安全运营服务 】深信服云端安全专家提供7*24小时持续的安全运营服务。在漏洞爆发之初,云端安全专家即对客户的网络环境进行漏洞扫描,保障第一时间检查客户的主机是否存在此漏洞。对存在漏洞的用户,检查并更新了客户防护设备的策略,确保客户防护设备可以防御此漏洞风险。

2020/3/18

Fastxml Jackson-databind发布的补丁中新增一个黑名单类。

2020/3/21

深信服千里目安全研究人员成功复现漏洞,发布漏洞分析文章

原文 

http://mp.weixin.qq.com/s?__biz=MzI4NjE2NjgxMQ==&mid=2650241564&idx=1&sn=1a0f89268e060d0aff69c4823c268a9e

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Fastjson caucho-quercus远程代码执行漏洞

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址