首页 > 安全 > 系统安全 >

dubbo中间件存在Java反序列化命令执行风险

2016-06-27

dubbo中间件存在命令执行的风险 -----------------0x00 dubbo 简介------------------Dubbo是阿里巴巴提供的一个开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。与传统的webse

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协议模式做一些过滤处理

相关文章
最新文章
热点推荐