-----------------
0x00 dubbo 简介
------------------
Dubbo是阿里巴巴提供的一个开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。
与传统的webservice不同,dubbo可以集中管理各个服务提供者、消费者集群,并提供注册中心、性能监控和管理后台等功能。
官网:http://**.**.**.**/Home-zh.htm
------------------------
0x01 dubbo的RMI调用方式
------------------------
RMI就是java程序中普遍使用的一种远程过程调用的接口,用于实现远程方法的调用。
Dubbo号称无侵入的API,甚至只需要JDK支持。这不禁让我想到dubbo这种远程service管理系统难不成会少了RMI的身影?
看了一下dubbo的源码,发现dubbo存在多个协议的支持:
不出所料,果然是支持RMI协议。来看一下dubbo里的实现:
使用了Spring的RMI创建方式,底层实现还是原生RMI,如果server端使用了不安全的lib,就会造成RMI方式的反序列化漏洞。
----------------------------------
0x02 dubbo RMI模式下的反序列化漏洞
-----------------------------------
本地搭建起dubbo服务,使用zookeeper作为注册中心,protocol选择为:
开启RMI服务之后,就会在dubbo控制台上看到服务信息:
使用ysoserial.jar提供的RMI注册类执行命令,这里使用了cloudeye进行辅助测试:
关于RMI的反序列化执行,可以看看zone上有人发的帖子,想了解原理,可以看绿盟发的分析文:http://**.**.**.**/java-deserialization-vulnerability-overlooked-mass-destruction/
Cloudeye收到信息:
--------------
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