Skip to main content
Mallory
CriticalCISA KEVExploited in the wildPublic exploit

Unauthenticated File Upload RCE in SAP NetWeaver Visual Composer Metadata Uploader

IdentifiersCVE-2025-31324CWE-862

CVE-2025-31324 is a critical vulnerability in SAP NetWeaver Visual Composer’s Metadata Uploader component caused by a missing or improper authorization check. The vulnerable endpoint, /developmentserver/metadatauploader, accepts crafted POST requests from unauthenticated attackers and permits unrestricted upload of attacker-controlled files, including executable content such as JSP webshells. The issue affects SAP NetWeaver 7.xx versions and service packs when the Visual Composer Framework component (VCFRAMEWORK.SCA) is installed. Observed exploitation placed malicious JSP files in NetWeaver Java server paths associated with sap.com/irj, enabling arbitrary code execution on the SAP application server and full host compromise.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation can result in complete compromise of the SAP NetWeaver host. Attackers can upload and execute malicious files, deploy persistent JSP webshells, conduct reconnaissance, steal sensitive data, modify application content and system state, and disrupt operations. The vulnerability has been used as an initial access vector by multiple threat actors, including ransomware operators and suspected espionage groups, and has been associated with host takeover, persistent access, and follow-on lateral movement. The confidentiality, integrity, and availability of the affected system can all be severely impacted.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, disable Visual Composer and restrict access to /developmentserver/metadatauploader so it is not reachable from untrusted networks, especially the public internet. Treat internet-exposed, unpatched systems as potentially compromised by default. Hunt for JSP webshells such as helper.jsp, cache.jsp, and randomly named JSP files in NetWeaver directories under j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/. Monitor for reconnaissance such as HEAD requests and exploitation attempts involving POST requests to the vulnerable endpoint. Investigate all files on exposed servers and validate whether unauthorized executable content has been uploaded.

Remediation

Patch, then assume compromise.

Apply SAP’s fixes for CVE-2025-31324 immediately and update NetWeaver AS to the latest fixed version on an emergency basis. The provided content specifically references SAP Notes 3594142 and 3604119. Confirm whether the vulnerable Visual Composer Framework component (VCFRAMEWORK.SCA) is present via the NetWeaver system information page; if the component is absent, the issue is not applicable. Because patching does not remediate an already compromised system, affected organizations should also perform incident response actions, including reviewing the Java server filesystem for unauthorized JSP, Java, or class files in known target directories such as the irj root/work paths, and reviewing logs for requests to /developmentserver/metadatauploader.
PUBLIC EXPLOITS

Exploits

10 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (10 hidden).

VALID 10 / 20 TOTALView more in app
CVE-2025-31324MaturityPoCVerified exploit

Repository contains a single Python exploit script (main.py) and a short README describing CVE-2025-31324 (SAP NetWeaver AS Java Visual Composer metadata uploader unrestricted file upload leading to RCE). main.py is an unauthenticated remote exploit that crafts an in-memory ZIP file containing a single entry named ".properties" whose contents are a large prebuilt binary blob (base64-decoded Java-serialization-like data) with dynamically adjusted length fields and embedded attacker-controlled data. The script POSTs this ZIP to the SAP NetWeaver Visual Composer metadata uploader endpoint at /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1 with Content-Type: application/octet-stream. Capabilities: - Remote exploitation over HTTP(S) using requests with TLS verification disabled (verify=False). - Drops a JSP web shell with a randomized lowercase filename (e.g., <random>.jsp) and reports it as accessible under /irj/<random>.jsp. - Accepts a --command argument intended to execute an arbitrary command by embedding it into the crafted payload (the code builds size fields based on the command length and constructs a newContent buffer around the decoded blob). - Includes a response-text fingerprint for a specific target version (prints "Found version 7.5") and applies a byte-sequence patch to the payload before retrying. Structure/purpose: - README.md: high-level vulnerability description and claimed context. - main.py: standalone PoC/operational exploit driver with CLI parsing (target URL, --command, --dropshell), payload construction, and a single request routine (sendReq) that performs the upload and prints success indicators based on response strings.

aristois913Disclosed Jan 12, 2026pythonnetwork
CVE-2025-31324-ExploitsMaturityPoCVerified exploit

This repository contains a demonstration of a remote code execution (RCE) vulnerability in a custom Flask web application (app.py). The app exposes an unauthenticated file upload endpoint (/VC/metaDataUploader) and a trigger endpoint (/trigger/<filename>) that executes uploaded Python files, allowing arbitrary code execution. The included rev.py script is a robust Python reverse shell that can be uploaded and triggered to provide the attacker with a PTY shell on the server. The setupshell.sh script automates the process of establishing persistent SSH access by adding an attacker's public key to the victim's authorized_keys, while cleanshell.sh removes these artifacts. The flag_gen.py script is a utility for generating obfuscated flags, likely for CTF or demonstration purposes. The main attack vector is network-based, exploiting the exposed HTTP endpoints. The repository is structured with clear separation between the vulnerable app, payloads, and helper scripts, and demonstrates a full attack chain from initial RCE to persistence and cleanup.

harshitvarma05Disclosed Aug 20, 2025pythonbashnetwork
sap-netweaver-0day-CVE-2025-31324MaturityPoCVerified exploit

This repository contains a Python proof-of-concept exploit (sap7.4poc.py) targeting SAP systems, likely SAP NetWeaver 7.4 and 7.5, via a vulnerability in the /developmentserver/metadatauploader endpoint. The exploit allows an attacker to upload a specially crafted ZIP file containing a serialized Java payload, which can execute arbitrary commands on the target server. Optionally, the exploit can drop a randomly named JSP webshell for persistent access at /irj/{SHELL_NAME}. The script requires the attacker to specify the target URL and either a command to execute or the --dropshell option. The exploit is operational, providing real remote code execution and webshell deployment capabilities. The repository also includes a README.md with attribution and leak information, but no technical details. No CVE is referenced, but the exploit is described as a 0day. The main attack vector is network-based, requiring access to the SAP server's HTTP interface.

antichainalysisDisclosed Aug 15, 2025pythonnetwork
CVE-2025-31324MaturityPoCVerified exploit

This repository contains a proof-of-concept (PoC) exploit for CVE-2025-31324, targeting SAP NetWeaver Visual Composer Metadata Uploader versions 7.50 and below. The main file, CVE-2025-31324.py, is a Python script that uploads a user-specified file to the vulnerable /developmentserver/metadatauploader endpoint on a target SAP NetWeaver server. The script allows the user to specify the protocol (HTTP/HTTPS), remote host, and port. The README.md provides usage instructions, affected versions, and patch guidance. The exploit demonstrates the vulnerability by sending a POST request with the file to the target endpoint, and is intended for educational purposes only. No hardcoded payload is included; the user supplies the file to upload. The attack vector is network-based, requiring access to the target's web interface.

sug4r-wr41thDisclosed May 10, 2025pythonmarkdownnetwork
CVE-2025-31324MaturityPoCVerified exploit

This repository provides a working exploit for CVE-2025-31324, targeting SAP NetWeaver. The main exploit script (CVE-2025-31324.py) is a Python tool that automates the process of identifying open SAP NetWeaver ports on a target host, uploading a malicious JSP webshell (shell.jsp) via the /developmentserver/metadatauploader endpoint, and then searching for the deployed shell at several common paths. The shell.jsp payload is a simple webshell that allows remote command execution via HTTP GET requests. The exploit is operational and provides a real, working payload. The repository also includes a README with usage instructions and Shodan search tips, and a standard GPL license file. The attack vector is network-based, requiring the attacker to reach the SAP NetWeaver instance over HTTP. The exploit is not part of a larger framework and is self-contained.

NULLTRACE0XDisclosed May 7, 2025pythonjspnetwork
sap_netweaver_cve-2025-31324-MaturityPoCVerified exploit

This repository contains a working exploit for CVE-2025-31324, a vulnerability in SAP NetWeaver Visual Composer's MetadataUploader endpoint. The main file, poc.py, is a Python script that automates the exploitation process. It crafts a ZIP archive containing a malicious JSP web shell (or a test file), uploads it to the vulnerable /developmentserver/metadatauploader endpoint using various form field names and content types, and then probes for successful upload by attempting to access the file via HTTP. If successful, the script provides the attacker with a URL to the uploaded web shell, which allows arbitrary command execution on the target server via HTTP requests. The shell.jsp file is a simple JSP web shell that executes commands passed via the 'cmd' parameter, gated by a password or token. The exploit is operational and demonstrates full compromise of the target if the vulnerability is present and the endpoint is accessible. The repository is structured with a single exploit script and a web shell payload, and is not part of any larger framework.

rf-peixotoDisclosed May 6, 2025pythonjspnetwork
CVE-2025-31324-File-UploadMaturityPoCVerified exploit

This repository provides a proof-of-concept (PoC) exploit for CVE-2025-31324, an unauthenticated file upload vulnerability in SAP NetWeaver Visual Composer's 'Metadata Uploader' component. The main exploit script, 'sap_vc_poc.py', is a comprehensive Python tool that can scan multiple targets for the vulnerability, either by uploading a test payload and checking for an out-of-band (OAST) callback or by uploading a user-specified file (such as a web shell). The tool supports both HTTP and HTTPS, legacy SSL, and various output formats. The included 'helper.jsp' is a simple JSP web shell that allows remote command execution via a 'cmd' parameter. The exploit targets the '/developmentserver/metadatauploader' endpoint and expects uploaded files to be accessible under '/sap/public/bc/webdynpro/sap/public/bc/zmetadata_upload'. The repository is structured with a main Python exploit script, a JSP payload, a requirements file, and documentation. The exploit is operational and can be used to achieve remote code execution on vulnerable SAP NetWeaver Visual Composer instances.

nullcultDisclosed Apr 30, 2025pythonjspnetwork
CVE-2025-31324_PoC_SAPMaturityPoCVerified exploit

This repository provides a proof-of-concept exploit for CVE-2025-31324, an unauthenticated file upload vulnerability in SAP NetWeaver Visual Composer's Metadata Uploader. The main exploit script (PoC.py) allows an attacker to upload a malicious WAR or JSP file (such as a reverse shell) to a vulnerable SAP endpoint, and then optionally trigger the payload to gain remote code execution. The EvilPayload directory contains a sample WAR archive with a JSP reverse shell (shell.jsp), and a standalone cache.jsp provides a similar shell. The repository includes helper scripts (checkForEndpoints.sh, scan_visual_composer.sh) to enumerate and brute-force likely vulnerable endpoints. The exploit is network-based, targeting HTTP(S) endpoints on SAP servers. The payloads are written in JSP and provide a reverse shell to the attacker. The repository is structured for ease of use in penetration testing and red teaming against SAP NetWeaver Visual Composer installations vulnerable to CVE-2025-31324.

abrewer251Disclosed Apr 29, 2025pythonjspnetwork
CVE-2025-31324_PoCMaturityPoCVerified exploit

This repository provides a working exploit for CVE-2025-31324, an unauthenticated file upload vulnerability in SAP NetWeaver Visual Composer's Metadata Uploader. The main exploit script (PoC.py) allows an attacker to upload arbitrary files (such as a WAR archive or JSP webshell) to vulnerable SAP endpoints, and optionally trigger the uploaded payload to achieve remote code execution. The repository includes: - PoC.py: Python script to automate the upload and trigger process, supporting custom endpoints, hosts, and payloads. - EvilPayload/: Directory containing a sample WAR payload with a JSP reverse shell (shell.jsp) and supporting files (web.xml, MANIFEST.MF, metadata.xml). - cache.jsp: Standalone JSP reverse shell payload. - CheckForEndpoints.sh: Bash script to enumerate and check common SAP Metadata Uploader endpoints for accessibility. - ScanForVisualComposer.sh: Bash script to brute-force likely webshell locations after exploitation. - README.md: Documentation and usage instructions. The exploit is operational and provides a reverse shell to the attacker if successful. It targets SAP NetWeaver Visual Composer instances with the vulnerable Metadata Uploader component exposed. The repository is well-structured, with clear separation between exploit logic, payloads, and helper scripts for endpoint discovery and post-exploitation shell location.

ODST-ForgeDisclosed Apr 28, 2025pythonbashnetwork
CVE-2025-31324MaturityPoCVerified exploit

This repository contains a proof-of-concept (PoC) exploit for CVE-2025-31324, a critical unauthenticated file upload vulnerability in SAP NetWeaver Visual Composer. The main file, 'CVE-2025-31324 .py', is a Python script that allows an attacker to upload arbitrary files to the vulnerable endpoint '/developmentserver/metadatauploader' on a target SAP NetWeaver server. The exploit requires the attacker to provide the target URL and the path to the file to upload. If the server is vulnerable, the file is uploaded without authentication, which could lead to remote code execution if a malicious file is uploaded. The repository also includes a README.md file with usage instructions and a description of the vulnerability. The exploit is straightforward, does not use any framework, and is intended for educational and authorized testing purposes only.

moftenDisclosed Apr 28, 2025pythonnetwork
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
SAPNetweaverapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence17

Every observed campaign linking this CVE to a named adversary.

Associated malware32

Malware families riding this exploit, with evidence and IOCs.

Detection signatures2

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity159

Community discussion across Reddit, Mastodon, and other social sources.