Samsung MagicINFO 9 Server Unauthenticated Path Traversal to RCE (CVE-2025-4632)
by digitalsurgn (script author); original discovery/template by s4e-io (ProjectDiscovery Nuclei community) · 2026-07-06
- Severity
- Critical
- CVE
- CVE-2025-4632
- Category
- web
- Affected product
- Samsung MagicINFO 9 Server (digital signage content management server), SWUpdateFileUploader servlet
- Affected versions
- Prior to 21.1052
- Disclosed
- 2026-07-06
- Patch status
- unpatched
Tags
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-06 |
| Last Updated | 2026-07-06 |
| Author / Researcher | digitalsurgn (script author); original discovery/template by s4e-io (ProjectDiscovery Nuclei community) |
| CVE / Advisory | CVE-2025-4632 |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.8 (per NVD) |
| Status | Weaponized |
| Tags | samsung, magicinfo, path-traversal, arbitrary-file-upload, unauthenticated-rce, jsp-webshell, cwe-22, cwe-434, python |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Samsung MagicINFO 9 Server (digital signage content management server), SWUpdateFileUploader servlet |
| Versions Affected | Prior to 21.1052 |
| Language / Platform | Python 3 (exploit); Java/JSP servlet (target, runs with SYSTEM authority on Windows) |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
Samsung MagicINFO 9 Server’s SWUpdateFileUploader servlet, which handles firmware/content update uploads from signage devices, fails to properly sanitize the fileName parameter, allowing directory traversal sequences (../../) to break out of the intended upload directory. An unauthenticated attacker can supply a crafted fileName to write an arbitrary file — including a .jsp web shell — directly into the web root, which the server then executes with SYSTEM privileges upon request. The included PoC (exploit_magicinfo.py) automates a two-step attack: it POSTs the traversal payload with attacker-controlled content to the vulnerable servlet, then GETs the resulting file path to confirm the write/execution succeeded. The README also documents several JSP payload variants (plain confirmation page, plain cmd.exe shell, reflection-obfuscated shell, and Base64-wrapped shell for WAF/URI-filter evasion), demonstrating full unauthenticated remote code execution.
Vulnerability Details
Root Cause
The SWUpdateFileUploader servlet accepts a fileName parameter (along with deviceType, deviceModelName, swVer) describing where to store an uploaded device update package, but does not validate or canonicalize the path before writing the file, allowing ../ traversal to escape the intended upload directory (an instance of CWE-22, which then enables CWE-434 arbitrary file write/execution since the write lands inside the web-served /MagicInfo/ root). The exploit builds the traversal path as:
| |
Because the servlet does not require authentication and does not restrict the written file’s extension or destination, a .jsp file placed in the web root is later served and executed by the application server as code.
Attack Vector
- Attacker crafts a POST request to
/MagicInfo/servlet/SWUpdateFileUploaderwith afileNamequery parameter containing multiple../traversal sequences (e.g../../../../../../../server/shell.jsp) plus randomizeddeviceType/deviceModelName/swVervalues to mimic a legitimate device update check-in, and a request body containing the JSP payload. - The servlet writes the POST body content to the traversed path, effectively placing the attacker’s file at
/MagicInfo/<filename>in the web root instead of the intended internal update-storage directory. - The attacker (or the PoC script automatically) issues a GET request to
/MagicInfo/<filename>to confirm the file was written and, for.jspfiles, that it executes. - If a web-shell JSP was uploaded, subsequent GET requests with a
c(command) parameter are executed viaRuntime.getRuntime().exec()(or an obfuscated Reflection-based equivalent, or Base64-encoded command to bypass URL/WAF filtering), returning command output in the HTTP response.
Impact
Full unauthenticated remote code execution with SYSTEM privileges on the MagicINFO server host, since the vulnerable servlet runs with elevated permissions and the written JSP file is directly reachable and executable via HTTP.
Environment / Lab Setup
Target: Samsung MagicINFO 9 Server < 21.1052, servlet endpoint reachable at http://<target>:7001/MagicInfo/servlet/SWUpdateFileUploader
Attacker: Python 3, `pip install requests`
Proof of Concept
PoC Script
See
exploit_magicinfo.pyin this folder.
| |
Detection & Indicators of Compromise
Signs of compromise:
- Unexpected
.jspfiles (e.g.shell.jsp,cmd.jsp,b64.jsp) in/MagicInfo/web-accessible directories SWUpdateFileUploaderPOST requests from IPs that are not registered signage devicescmd.exe /cprocess spawns originating from the MagicINFO service account/SYSTEM context correlated with HTTP requests
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade Samsung MagicINFO 9 Server to version 21.1052 or later, which addresses the path traversal in SWUpdateFileUploader |
| Interim mitigation | Restrict network access to the MagicINFO management interface/servlet endpoints to trusted device/management networks only, and monitor/alert on file writes with traversal sequences in upload parameters |
References
Notes
Mirrored from https://github.com/digitalsurgn/CVE-2025-4632_POC on 2026-07-06. exploit_magicinfo.py implements path-traversal file upload against MagicInfo’s SWUpdateFileUploader servlet, matching the claimed RCE vector; the script is a direct programmatic implementation of the logic in the public ProjectDiscovery Nuclei template for this CVE.
| |