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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2017-5638-Attack-and-Defense — مختبر أمني قائم على Docker يوضح استغلال ثغرة Apache Struts2 S2-045 (CVE-2017-5638) والدفاع ضدها، ويشمل تطبيقات قابلة للاستغلال وأخرى مُصححة مع حماية WAF للتدريب العملي. | Kitploit
أدوات/GitHubGitHub/acharaf06/cve-2017-5638-attack-and-defense
أدوات دفاعيةتحليل الثغرات الأمنيةاستغلال تطبيقات الويبتجاوز WAFاختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubacharaf06/cve-2017-5638-attack-and-defense

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2017-5638-Attack-and-Defense

مختبر أمني قائم على Docker يوضح استغلال ثغرة Apache Struts2 S2-045 (CVE-2017-5638) والدفاع ضدها، ويشمل تطبيقات قابلة للاستغلال وأخرى مُصححة مع حماية WAF للتدريب العملي.

عرض المستودع
15منذ 8 أشهرلم تتم المراجعة بعد

مختبر دفاع واستغلال Apache Struts2 S2-045

مختبر أمني قائم على Docker يعرض كلاً من الاستغلال و الدفاع ضد ثغرة Apache Struts2 S2-045 (CVE-2017-5638). يحتوي هذا المختبر على:

  1. تطبيق ضعيف: Struts 2.3.31 (ضعيف أمام S2-045) لعرض الاستغلال.
  2. مختبر دفاع: Struts 6.3.x (مُصحّح) مع حماية WAF للتدريب على الدفاع.

⚠️ تحذير أمني: يحتوي هذا المختبر على أكواد استغلال عاملة و كود ضعيف. استخدمه فقط في بيئات معزولة. لا تعرضه للشبكات العامة.

نظرة عامة على البنية

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                     Host (127.0.0.1 only)                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────┐    ┌─────────────────┐              │
│  │   Simulator     │───▶│  Nginx Proxy    │              │
│  │  (curl-based)   │    │  + WAF Rules    │              │
│  └─────────────────┘    └────────┬────────┘              │
│                                  │                        │
│                          ┌───────┴────────┐              │
│                          │                │                │
│                  ┌───────▼──────┐ ┌───────▼──────┐        │
│                  │  Defense App │ │ Vulnerable   │        │
│                  │ (Struts 6.3) │ │ App (2.3.31) │        │
│                  │ Port: 8080  │ │ Port: 8081  │        │
│                  └──────────────┘ └──────────────┘        │
│                                                             │
│  ┌─────────────────┐                                      │
│  │  Exploit        │───▶ Vulnerable App (8081)            │
│  │  Container      │                                      │
│  └─────────────────┘                                      │
│                                                             │
│  Logs mounted to: ./logs/nginx/, ./logs/app/,             │
│                   ./logs/app-vulnerable/                  │
└─────────────────────────────────────────────────────────────┘

المكونات

البدء

المتطلبات الأساسية

  • Docker (الإصدار 20.10 أو أحدث)
  • Docker Compose (الإصدار 2.0 أو أحدث)
  • Python 3 (اختياري، لتشغيل نصوص الاستغلال مباشرة)
  • curl (اختياري، للاختبار اليدوي)

التثبيت

1. استنساخ المستودع

root@kitploit:~
# Clone the repository
git clone https://github.com/ACharaf06/cybersec.git
cd cybersec

2. البناء والتشغيل

root@kitploit:~
# Build all containers (this may take several minutes on first run)
docker compose build

# Start the defense lab (nginx + patched app)
docker compose up -d nginx app

# Start the vulnerable app (for exploitation demo)
docker compose up -d app-vulnerable

# Verify services are running
docker compose ps

# Wait for services to be healthy (about 60 seconds)
sleep 60

# Check health endpoints
curl http://127.0.0.1:8080/struts-lab/health  # Defense lab
curl http://127.0.0.1:8081/struts-lab/health   # Vulnerable app

المخرجات المتوقعة:

  • مختبر الدفاع: استجابة JSON تحتوي على "status":"healthy" و "strutsVersion":"6.3.0.2 (patched - not vulnerable to S2-045)"
  • التطبيق الضعيف: استجابة JSON تحتوي على "status":"healthy" و "strutsVersion":"2.3.31 (VULNERABLE to S2-045)"

2. اختبار مختبر الدفاع

root@kitploit:~
# Run the simulator container (tests defense mechanisms)
docker-compose run --rm simulator

# Or run individual tests manually:
# Legitimate upload
curl -X POST -F "[email protected]" http://127.0.0.1:8080/struts-lab/upload

# Suspicious Content-Type (will be blocked by WAF)
curl -v -X POST \
  -H "Content-Type: multipart/form-data; boundary=----SUSPICIOUS" \
  http://127.0.0.1:8080/struts-lab/upload

3. عرض الاستغلال

root@kitploit:~
# Run the exploit container (demonstrates S2-045 exploitation)
docker-compose --profile exploit run --rm exploit

# Or use the Python exploit script directly
python3 exploit/exploit.py http://127.0.0.1:8081/struts-lab 'whoami'

# Or use the bash script
./exploit/demo_exploit.sh

⚠️ تحذير: التطبيق الضعيف قابل للاستغلال بشكل متعمد. قم بتشغيله فقط في بيئات معزولة.

4. مراقبة السجلات

root@kitploit:~
# Defense lab logs
tail -f logs/nginx/access.log      # Nginx access logs
tail -f logs/nginx/error.log       # WAF blocks
tail -f logs/app/struts-lab.log    # Defense app logs

# Vulnerable app logs
tail -f logs/app-vulnerable/struts-lab.log  # Vulnerable app logs

# All logs combined
docker-compose logs -f

ما يجب ملاحظته

مختبر الدفاع (المنفذ 8080)

طلب شرعي:

  • سجل الوصول لـ Nginx: استجابة 200
  • سجل التطبيق: رسالة معالجة رفع بمستوى INFO
  • اكتمال الطلب بنجاح

طلب مشبوه/غير صحيح:

  • سجل الوصول لـ Nginx: 403 Forbidden أو 400 Bad Request
  • سجل الأخطاء لـ Nginx: رسالة تفعيل قاعدة WAF
  • سجل التطبيق: قد يظهر خطأ في التحليل إذا وصل الطلب إلى التطبيق
  • يتم حظر الطلب أو تنظيفه

التطبيق الضعيف (المنفذ 8081)

استغلال ناجح:

  • استجابة HTTP 200 أو 500
  • إخراج الأمر ظاهر في نص الاستجابة
  • تقييم تعبيرات OGNL
  • تنفيذ أوامر النظام

أمثلة على السجلات:

حظر Nginx لنوع Content-Type مشبوه (مختبر الدفاع):

root@kitploit:~
[WAF] Blocked suspicious Content-Type pattern - Request ID: abc123

تسجيل بيانات الطلب من التطبيق (مختبر الدفاع):

root@kitploit:~
[REQUEST] ID=abc123 Content-Type=multipart/form-data Method=POST URI=/upload
[UPLOAD] Processing file upload for request abc123

استغلال ناجح (التطبيق الضعيف):

root@kitploit:~
HTTP/1.1 200 OK
...
root
(Command output appears in response body)

مقارنة: الضعيف مقابل الدفاع

ملاحظات أمنية

العزل

  • جميع الخدمات مرتبطة بـ 127.0.0.1 فقط (لا وصول خارجي)
  • شبكة Docker داخلية للاتصال بين الحاويات
  • لا تعريض للمنافذ على 0.0.0.0
  • لا ينبغي أبداً تعريض التطبيق الضعيف للشبكات العامة

طبقات الدفاع (مختبر الدفاع)

  1. قواعد WAF لـ Nginx: حظر أنماط Content-Type المشبوهة قبل الوصول إلى التطبيق
  2. تحديد المعدل: 10 طلبات/ثانية لكل عنوان IP
  3. حدود حجم الطلب: 10 ميجابايت كحد أقصى للجسم، 8 كيلوبايت كحد أقصى للرؤوس
  4. Struts مُصحّح: استخدام Struts 6.3.x (غير ضعيف أمام S2-045)
  5. تسجيل شامل: يتم تسجيل جميع الأنشطة المشبوهة

ما كانت عليه S2-045

S2-045 (CVE-2017-5638) كانت ثغرة حرجة في Apache Struts2 للإصدارات 2.3.5 - 2.3.31 و 2.5 - 2.5.10 حيث:

  • يمكن لرؤوس Content-Type الخبيثة حقن تعبيرات OGNL
  • قام محلل Jakarta Multipart بتقييم هذه التعبيرات
  • أدى ذلك إلى تنفيذ الأوامر عن بُعد (RCE)

يُظهر التطبيق الضعيف (المنفذ 8081) هذه الثغرة. يُظهر مختبر الدفاع (المنفذ 8080) كيفية الحماية منها.

هيكل الملفات

root@kitploit:~
.
├── docker-compose.yml          # تنسيق الحاويات
├── README.md                   # هذا الملف
├── EXPLOITATION_GUIDE.md      # دليل استغلال مفصل
├── TECHNICAL_DETAILS.md        # تفاصيل التنفيذ الفنية
├── GLOSSARY.md                 # مسرد مصطلحات الأمان
├── nginx/
│   ├── nginx.conf              # تكوين nginx الرئيسي
│   └── waf-rules.conf          # قواعد WAF لأنماط S2-045
├── app/                        # مختبر الدفاع (مُصحّح)
│   ├── Dockerfile              # بناء Tomcat + Maven
│   └── struts-app/
│       ├── pom.xml             # مشروع Maven (Struts 6.3.x)
│       └── src/main/
│           ├── java/           # فئات الإجراءات
│           ├── resources/      # تكوين Struts + Log4j
│           └── webapp/         # عروض JSP + web.xml
├── app-vulnerable/             # التطبيق الضعيف (للاستغلال)
│   ├── Dockerfile              # بناء Tomcat + Maven
│   └── struts-app/
│       ├── pom.xml             # مشروع Maven (Struts 2.3.31)
│       └── src/main/
│           ├── java/           # فئات الإجراءات
│           ├── resources/      # تكوين Struts + Log4j
│           └── webapp/         # عروض JSP + web.xml
├── exploit/                    # أدوات الاستغلال
│   ├── Dockerfile              # حاوية الاستغلال
│   ├── demo_exploit.sh         # نص Bash للاستغلال
│   └── exploit.py              # نص Python للاستغلال
├── simulator/
│   ├── Dockerfile              # Alpine + curl
│   └── simulate.sh             # نص الاختبار
└── logs/                       # دليل السجلات المثبت
    ├── nginx/
    ├── app/                    # سجلات مختبر الدفاع
    └── app-vulnerable/         # سجلات التطبيق الضعيف

التنظيف

root@kitploit:~
# Stop all containers
docker compose down

# Remove volumes and logs
docker compose down -v
rm -rf logs/

# Full cleanup (including images)
docker compose down --rmi all -v

إعداد التطوير

هيكل المشروع

تم تنظيم المشروع كما يلي:

  • app/ - تطبيق مختبر الدفاع (Struts 6.3.x، مُصحّح)
  • app-vulnerable/ - التطبيق الضعيف (Struts 2.3.31)
  • exploit/ - أدوات ونصوص الاستغلال
  • nginx/ - تكوين وكيل Nginx العكسي مع قواعد WAF
  • simulator/ - محاكي أنماط الهجوم
  • logs/ - سجلات التطبيق (مُستبعدة من Git)

بناء المكونات الفردية

root@kitploit:~
# Rebuild only the vulnerable app
docker compose build app-vulnerable
docker compose up -d app-vulnerable

# Rebuild only the defense app
docker compose build app
docker compose up -d app

# Rebuild exploit container
docker compose build exploit

التوثيق

  • EXPLOITATION_GUIDE.md: دليل مفصل حول آلية ثغرة S2-045 وإجراءات الاستغلال
  • TECHNICAL_DETAILS.md: تفاصيل التنفيذ الفنية للمختبر
  • GLOSSARY.md: مسرد المصطلحات الأمنية المستخدمة في هذا المختبر

الموارد التعليمية

  • نشرات أمان Apache Struts
  • تفاصيل CVE-2017-5638
  • OWASP منع الحقن
  • وحدة Metasploit S2-045

⚠️ تحذيرات هامة

  1. التطبيق الضعيف: التطبيق على المنفذ 8081 ضعيف عمدًا. لا تعرضه للشبكات العامة.
  2. أكواد استغلال عاملة: يحتوي هذا المختبر على كود استغلال عامل. استخدمه فقط في بيئات معزولة.
  3. غرض تعليمي: هذا المختبر مخصص للتعليم الأمني والبحث واختبار الاختراق المصرح به فقط.
  4. الامتثال القانوني: استخدمه فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.

إخلاء مسؤولية: هذا المختبر لأغراض تعليمية فقط. استخدمه بمسؤولية وفي بيئات خاضعة للرقابة فقط.

تنزيل الأداة
الحاويةالغرضالمنفذ
nginxوكيل عكسي مع قواعد WAF، تحديد معدل127.0.0.1:8080
appTomcat 9 + Struts 6.3.x (مُصحّح، مختبر دفاع)داخلي فقط
app-vulnerableTomcat 9 + Struts 2.3.31 (ضعيف، للاستغلال)127.0.0.1:8081
exploitحاوية عرض الاستغلاللا يوجد
simulatorيرسل طلبات اختبار (عادية + أنماط مشبوهة)لا يوجد
الميزةالتطبيق الضعيف (المنفذ 8081)مختبر الدفاع (المنفذ 8080)
إصدار Struts2.3.31 (ضعيف)6.3.0.2 (مُصحّح)
حماية WAF❌ لا يوجد✅ قواعد WAF لـ Nginx
تحديد المعدل❌ لا يوجد✅ 10 طلبات/ثانية
حدود حجم الطلب❌ لا يوجد✅ 10 ميجابايت للجسم، 8 كيلوبايت للرؤوس
تسجيل الأمان⚠️ ضئيل✅ شامل
حقن OGNL✅ قابل للاستغلال❌ محظور/مُصحّح
إمكانية تنفيذ الأوامر عن بُعد✅ نعم❌ لا
حالة الاستخدامعرض الاستغلالتدريب الدفاع