rmi 反序列化漏洞_[漏洞分析]CVE201917564/Apache Dubbo存在反序列化漏洞

漏洞描述

Apache Dubbo支持多种协议,官方推荐使用Dubbo协议.Apache Dubbo HTTP协议中的一个反序列化漏洞(CVE-2019-17564),该漏洞的主要原因在于当Apache Dubbo启用HTTP协议之后,Apache Dubbo对消息体处理不当导致不安全反序列化,当项目包中存在可用的gadgets时即可导致远程代码执行.

CVE编号

CVE-2020-17564

漏洞威胁等级

高危

影响范围

2.7.0 <= Apache Dubbo <= 2.7.4.1
2.6.0 <= Apache Dubbo <= 2.6.7
Apache Dubbo = 2.5.x

漏洞分析

  • 1.环境搭建

为了环境搭建方便,访问dubbo-samples的github项目主页(https://github.com/apache/dubbo-samples)

下载源码以后,分离出http部分

78dc02ade7e64c7207a8bbf0f28b5ce3.png

修改pom.xml中32行dubbo.version76b9c95067dd7b9535180e8c95876e65.png修改其为漏洞版本,以2.7.3为例,随后在Idea中开启即可

修改JDK版本为1.8

2e6b863b6347b7eab8896745cb22953b.png

随后导入一个可控的gadgets用于分析,例如commons-collections4-4.0,并启动HttpProvider

763d617604567140a7c552a6e8d4a6db.png

注:Dubbo启动依赖zookeeper,这部分使用不再赘述,请自行查阅google
  • 2.漏洞分析

我们进入

org.apache.dubbo.remoting.http.servlet.DispatcherServlet在43行handler.handle(request, response);处打入断点,利用burp进行发包跟踪它的走向

e2b47210c6f56d6132de61e2d46ecfc0.png

随后发现其进入org.apache.dubbo.rpc.protocol.http.HttpProtocol中的handle939448b55033e40375b77157eb8e7807.png

进一步跟踪

686f9c119b30d883b4f60b262a3e6546.png

最终进入org.springframework.remoting.rmi.RemoteInvocationSerializingExporter

5fda4e0b740857752cbf4a58b0831499.png

该ois对象来源为报文中post data部分,对于传入的ois并没有做任何安全过滤和检查,直接执行了readObject方法导致RCE产生.6c242b054383e1b5c5382c76b2439c2a.png

很多人不太理解Java反序列化漏洞怎么rce,这里给出一段示例代码

使用ysoserial随意生成一个序列化文件,再利用下面的代码读取该序列化文件即可达到效果,可见直接使用readObject方法的危害

import java.io.FileInputStream;import java.io.ObjectInputStream;public class test1 {    public test1() {    }    public static void main(String[] args) throws Exception {        FileInputStream fis = new FileInputStream("/Users/xue/Documents/NetSafe/Tools/JavaTools/1.ser");        ObjectInputStream ois = new ObjectInputStream(fis);        ois.readObject();    }}

漏洞验证

98595eff94abda16bbbb972baf7c911b.png

修复建议

升级Apache Dubbo到2.7.5版本

时间轴

[0] 2020/02/10 该漏洞披露邮件公开
[1] 2020/02/13 亚信安全网络攻防实验室分析&复现该漏洞并发布漏洞分析

Reference

https://www.mail-archive.com/dev@dubbo.apache.org/msg06225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值