当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2016-0188237

漏洞标题:dubbo中间件存在Java反序列化命令执行风险

相关厂商:阿里巴巴

漏洞作者: 隐形人真忙

提交时间:2016-03-23 19:13

修复时间:2016-06-26 19:00

公开时间:2016-06-26 19:00

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-03-23: 细节已通知厂商并且等待厂商处理中
2016-03-28: 厂商已经确认,细节仅向厂商公开
2016-03-31: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2016-05-22: 细节向核心白帽子及相关领域专家公开
2016-06-01: 细节向普通白帽子公开
2016-06-11: 细节向实习白帽子公开
2016-06-26: 细节向公众公开

简要描述:

dubbo中间件存在命令执行的风险

详细说明:

-----------------
0x00 dubbo 简介
------------------
Dubbo是阿里巴巴提供的一个开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。
与传统的webservice不同,dubbo可以集中管理各个服务提供者、消费者集群,并提供注册中心、性能监控和管理后台等功能。
官网:http://**.**.**.**/Home-zh.htm
------------------------
0x01 dubbo的RMI调用方式
------------------------
RMI就是java程序中普遍使用的一种远程过程调用的接口,用于实现远程方法的调用。
Dubbo号称无侵入的API,甚至只需要JDK支持。这不禁让我想到dubbo这种远程service管理系统难不成会少了RMI的身影?
看了一下dubbo的源码,发现dubbo存在多个协议的支持:

1.png


不出所料,果然是支持RMI协议。来看一下dubbo里的实现:

2.png


使用了Spring的RMI创建方式,底层实现还是原生RMI,如果server端使用了不安全的lib,就会造成RMI方式的反序列化漏洞。
----------------------------------
0x02 dubbo RMI模式下的反序列化漏洞
-----------------------------------
本地搭建起dubbo服务,使用zookeeper作为注册中心,protocol选择为:

3.png


开启RMI服务之后,就会在dubbo控制台上看到服务信息:

4.png


使用ysoserial.jar提供的RMI注册类执行命令,这里使用了cloudeye进行辅助测试:

5.png


关于RMI的反序列化执行,可以看看zone上有人发的帖子,想了解原理,可以看绿盟发的分析文:http://**.**.**.**/java-deserialization-vulnerability-overlooked-mass-destruction/
Cloudeye收到信息:

6.png


--------------
0x03 小彩蛋
---------------
在测试的途中,发现了不少dubbo的监控组件暴露,并且互联网上存在很多弱口令的dubbo-admin(默认用户名/密码为root)。
两个小例子:
**.**.**.**:8090/governance/services/jackjboss/com.chsoft.shiro.facade.UserService/providers/615
**.**.**.**:8080/governance/services/com.alibaba.dubbo.monitor.MonitorService/providers/40

漏洞证明:

见详细说明

修复方案:

针对rmi协议模式做一些过滤处理

版权声明:转载请注明来源 隐形人真忙@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2016-03-28 18:59

厂商回复:

您好,问题已经确认,正在修复中。感谢您对阿里安全的关注和支持。

最新状态:

暂无