Apache OFBiz CVE-2023-49070 & 最新 CVE-2023-51467 未授权分析(RCE/SSRF/LFR)
字数 2688 2025-08-19 12:42:26

Apache OFBiz 漏洞分析:CVE-2023-49070 & CVE-2023-51467

概述

本文详细分析Apache OFBiz框架中的两个重要漏洞:CVE-2023-49070和CVE-2023-51467。这些漏洞涉及未授权访问、远程代码执行(RCE)、服务器端请求伪造(SSRF)和本地文件读取(LFR)等多种安全问题。

CVE-2023-51467(鉴权绕过)

影响范围

  • Apache OFBiz < 18.12.10

测试版本

  • Apache OFBiz 18.12.9

漏洞原理

该漏洞通过两种方式绕过安全限制:

  1. 绕过</serializable关键词检测

    • 使用URI /control/xmlrpc/;/,利用;作为矩阵参数分隔符的特性绕过检测
    • 参考:https://www.baeldung.com/cs/url-matrix-vs-query-parameters#tcp-connection
  2. 绕过XML-RPC接口认证

    • 关键代码路径:org.apache.ofbiz.webapp.control.LoginWorker#checkLogin
    • 当用户名为空时,unpwErrMsgList会添加提示信息
    • 设置requirePasswordChange参数为Y,使得返回值为requirePasswordChange而非error,从而绕过认证

漏洞修复

  • 修复提交:https://github.com/apache/ofbiz-framework/commit/c59336f604f503df5b2f7c424fd5e392d5923a27
  • 直接移除了xmlrpc模块

CVE-2023-51467(RCE/SSRF/LFR)

影响版本

  • Apache OFBiz < 18.12.11
  • 测试版本:18.12.10

Groovy RCE漏洞

漏洞接口

  • /webtools/control/ProgramExport
  • 映射的servlet:org.apache.ofbiz.webapp.control.RequestHandler#doRequest

漏洞分析

  1. 请求处理流程:

    • controller.xml读取配置
    • 虽然设置了鉴权,但已被绕过
    • 没有设置event handler,只设置了响应信息,类型为view
  2. 视图渲染:

    • org.apache.ofbiz.webapp.control.RequestHandler#renderView
    • 视图配置从controller.xml读取
    • 参考文档:https://cwiki.apache.org/confluence/display/OFBIZ/Understanding+the+OFBiz+Widget+Toolkit
  3. Groovy脚本执行:

    • 通过设置groovyProgram参数执行脚本
    • 调用栈:
      org.apache.ofbiz.base.util.UtilProperties#getResourceBundle
      org.apache.ofbiz.base.util.UtilProperties#createResourceName
      org.apache.ofbiz.base.util.UtilProperties#getProperties
      org.apache.ofbiz.base.util.UtilProperties.ExtendedProperties#ExtendedProperties
      
  4. 安全过滤:

    • 调用SecuredUpload.isValidText进行检查
    • 黑名单不严格(如未过滤execute
    • 可通过字符串拼接绕过执行任意命令

SSRF & 任意配置读取

漏洞修复差异

  • https://github.com/apache/ofbiz-framework/commit/d8b097f6717a4004acf023dfe929e0e41ad63faa
    • 将空检查替换为UtilValidate.isEmpty(),增加了字符串长度检查
  • https://github.com/apache/ofbiz-framework/commit/82c17376880a8fd8a11261e1e00dad45cfed344d

漏洞接口

  • /webtools/control/getJSONuiLabelArray
  • 默认国际化配置文件:framework/common/config/CommonUiLabels.xml
  • 路由信息:framework/common/webcommon/WEB-INF/common-controller.xml

漏洞分析

  1. 请求处理:

    • 通过jQuery发送POST请求到getJSONuiLabelArray API
    • 传递requiredLabels参数
    • 参考文件:
      • themes/common-theme/webapp/common/js/util/OfbizUtil.js
      • applications/party/webapp/partymgr/static/PartyProfileContent.js
  2. 配置文件读取:

    • 关键方法:org.apache.ofbiz.base.util.UtilProperties#getResourceBundle
    • createResourceName方法处理:
      • 第三个参数为true时移除.xml/.properties后缀
      • 添加locale本地信息后缀
    • 如果bundleCache中没有对应项:
      • 移除locale后缀
      • 调用getProperties方法
  3. URL解析:

    • org.apache.ofbiz.base.util.UtilProperties#getProperties
    • resolvePropertiesUrl解析resource的URL
    • 支持多种协议(http/file等)
    • 创建URL实例并建立连接读取内容
  4. 内容回显:

    • org.apache.ofbiz.base.util.UtilProperties#getMessage
    • 读取键值对,匹配传入的标签值并回显

漏洞利用

  1. 配置文件读取示例:

    • 读取applications/accounting/config/payment.properties
  2. SSRF利用:

    • 创建自定义properties文件
    • 通过HTTP服务提供文件
    • 构造请求触发SSRF

引用资料

  1. Insecure Deserialization in Apache XML-RPC · CVE-2019-17570
  2. CVE-2023-49070&&CVE-2020-9496 OFBIZ XML-RPC漏洞分析
  3. Apache OFBiz未授权命令执行浅析(CVE-2023-51467)
  4. 浅析Ofbiz反序列化漏洞(CVE-2020-9496)
  5. The Apache OFBiz® Project - Release Notes 18.12.11
Apache OFBiz 漏洞分析:CVE-2023-49070 & CVE-2023-51467 概述 本文详细分析Apache OFBiz框架中的两个重要漏洞:CVE-2023-49070和CVE-2023-51467。这些漏洞涉及未授权访问、远程代码执行(RCE)、服务器端请求伪造(SSRF)和本地文件读取(LFR)等多种安全问题。 CVE-2023-51467(鉴权绕过) 影响范围 Apache OFBiz < 18.12.10 测试版本 Apache OFBiz 18.12.9 漏洞原理 该漏洞通过两种方式绕过安全限制: 绕过 </serializable 关键词检测 : 使用URI /control/xmlrpc/;/ ,利用 ; 作为矩阵参数分隔符的特性绕过检测 参考:https://www.baeldung.com/cs/url-matrix-vs-query-parameters#tcp-connection 绕过XML-RPC接口认证 : 关键代码路径: org.apache.ofbiz.webapp.control.LoginWorker#checkLogin 当用户名为空时, unpwErrMsgList 会添加提示信息 设置 requirePasswordChange 参数为 Y ,使得返回值为 requirePasswordChange 而非 error ,从而绕过认证 漏洞修复 修复提交:https://github.com/apache/ofbiz-framework/commit/c59336f604f503df5b2f7c424fd5e392d5923a27 直接移除了xmlrpc模块 CVE-2023-51467(RCE/SSRF/LFR) 影响版本 Apache OFBiz < 18.12.11 测试版本:18.12.10 Groovy RCE漏洞 漏洞接口 /webtools/control/ProgramExport 映射的servlet: org.apache.ofbiz.webapp.control.RequestHandler#doRequest 漏洞分析 请求处理流程: 从 controller.xml 读取配置 虽然设置了鉴权,但已被绕过 没有设置event handler,只设置了响应信息,类型为 view 视图渲染: org.apache.ofbiz.webapp.control.RequestHandler#renderView 视图配置从 controller.xml 读取 参考文档:https://cwiki.apache.org/confluence/display/OFBIZ/Understanding+the+OFBiz+Widget+Toolkit Groovy脚本执行: 通过设置 groovyProgram 参数执行脚本 调用栈: 安全过滤: 调用 SecuredUpload.isValidText 进行检查 黑名单不严格(如未过滤 execute ) 可通过字符串拼接绕过执行任意命令 SSRF & 任意配置读取 漏洞修复差异 https://github.com/apache/ofbiz-framework/commit/d8b097f6717a4004acf023dfe929e0e41ad63faa 将空检查替换为 UtilValidate.isEmpty() ,增加了字符串长度检查 https://github.com/apache/ofbiz-framework/commit/82c17376880a8fd8a11261e1e00dad45cfed344d 漏洞接口 /webtools/control/getJSONuiLabelArray 默认国际化配置文件: framework/common/config/CommonUiLabels.xml 路由信息: framework/common/webcommon/WEB-INF/common-controller.xml 漏洞分析 请求处理: 通过 jQuery 发送POST请求到 getJSONuiLabelArray API 传递 requiredLabels 参数 参考文件: themes/common-theme/webapp/common/js/util/OfbizUtil.js applications/party/webapp/partymgr/static/PartyProfileContent.js 配置文件读取: 关键方法: org.apache.ofbiz.base.util.UtilProperties#getResourceBundle createResourceName 方法处理: 第三个参数为 true 时移除 .xml/.properties 后缀 添加 locale 本地信息后缀 如果 bundleCache 中没有对应项: 移除 locale 后缀 调用 getProperties 方法 URL解析: org.apache.ofbiz.base.util.UtilProperties#getProperties resolvePropertiesUrl 解析resource的URL 支持多种协议( http / file 等) 创建URL实例并建立连接读取内容 内容回显: org.apache.ofbiz.base.util.UtilProperties#getMessage 读取键值对,匹配传入的标签值并回显 漏洞利用 配置文件读取示例: 读取 applications/accounting/config/payment.properties SSRF利用: 创建自定义 properties 文件 通过HTTP服务提供文件 构造请求触发SSRF 引用资料 Insecure Deserialization in Apache XML-RPC · CVE-2019-17570 CVE-2023-49070&&CVE-2020-9496 OFBIZ XML-RPC漏洞分析 Apache OFBiz未授权命令执行浅析(CVE-2023-51467) 浅析Ofbiz反序列化漏洞(CVE-2020-9496) The Apache OFBiz® Project - Release Notes 18.12.11