
تطبيق خادم-عميل ضعيف عمدًا لتعلم اختبار الاختراق للعملاء الأثقال غير HTTP. يتضمن تحديات لحقن SQL، وتنفيذ الأوامر عن بعد (RCE)، وهجمات XML، وقراءة تجاوز المخزن المؤقت، وثغرات التحكم في الوصول.
تطبيق خادم-عميل ضعيف (VuCSA) مصمم لتعلم/تقديم كيفية إجراء اختبارات الاختراق لتطبيقات خادم-عميل غير HTTP.
مكتوب بلغة Java (مع واجهة رسومية JavaFX).
حاليًا، يحتوي التطبيق الضعيف على التحديات التالية:
إذا كنت تريد معرفة كيفية حل هذه التحديات، ألق نظرة على موقع PETEP الذي يصف كيفية استخدام الأداة مفتوحة المصدر PETEP لاستغلالها.
نصيحة 1: قبل البدء في الاختراق، لا تنسَ التحقق من هيكل بيانات الرسائل أدناه.
عند تعديل حركة مرور الشبكة، ربما يتعين عليك مراعاة الهيكل، خاصةً بايتات طول الحمولة.
نصيحة 2: يمكن استغلال معظم التحديات من خلال تعديل حركة مرور الشبكة.
لذلك، يُوصى باستخدام بروكسي TCP أو ربط العمليات للاختبار.
نصيحة 3: تحتوي بعض التحديات على التحقق من صحة الإدخال وقيود، وهو أمر شائع في العملاء الكثيفين، لكنه لا يعني أن الخادم يستخدم نفس التحقق.
في هذا التحدي، هدفك هو التلاعب بحركة مرور الشبكة بين العميل والخادم بطريقة تؤدي إلى قراءة مفرطة من المخزن المؤقت.
يمثل تحدي تنفيذ الأوامر ثغرة بسيطة جدًا لتنفيذ الأوامر.
الهدف هو تنفيذ أمر ضار على الخادم.
يحتوي تحدي حقن SQL على إدخال بحث ضعيف أمام حقن SQL،
ولكن كما ستلاحظ قريبًا، لا يسمح لك الإدخال بإدخال الأحرف التي تحتاجها.
يعتمد تحدي التعداد على نموذج تسجيل دخول محاكى غير محمي من التعداد.
هل ستتمكن من العثور على جميع المستخدمين الخمسة وتخمين كلمات مرورهم؟
في هذا التحدي، يمكنك العثور على عدة ثغرات XML:
يمثل تحدي التحكم في الوصول الأفقي قارئ مستندات يسمح للمستخدم برؤية مستنداته الخاصة وقراءة محتواها.
الهدف هو العثور على 5 مستندات لمستخدمين آخرين.
يعتمد تحدي التحكم في الوصول العمودي على لوحة مستخدم محاكاة تعرض معلومات المستخدم الأساسية.
الهدف هو العثور على وظيفة إدارية مخفية والتحقق مما إذا كان من الممكن استخدامها كمستخدم ضيف.
تستخدم ثغرة إلغاء التسلسل RCE إلغاء التسلسل/التسلسل في Java لنقل البيانات عبر الشبكة.
يحتوي التطبيق على مسارين يمكنك استخدامهما لتحقيق تنفيذ التعليمات البرمجية عن بُعد من خلال إلغاء التسلسل الضعيف في Java.
يمكنك العثور على كلا المسارين من خلال فحص ملف JAR للخادم
أو من خلال النظر في الكود المصدري.
الهدف هو إنشاء استغلال لكلا المسارين وتنفيذ أمر ضار على الخادم.
نصيحة: يمكنك استخدام JAR الخادم كمكتبة لتسهيل إنشاء الاستغلال.
تحتاج إلى Java 11 أو إصدار أحدث لتشغيل VuCSA.
ملاحظة: بالنسبة لأجهزة Mac بمعمارية ARM64 (رقائق M1، M2)، استخدم بناءً خاصًا لـ Java 17.
لتشغيل الخادم والعميل الضعيفين، يمكنك استخدام أحد الإصدارات على GitHub
أو تشغيل gradle assemble، الذي ينشئ حزم توزيع (لكل من Windows و Unix).
تحتوي هذه الحزم على نصوص sh/bat التي ستشغل الخادم والعميل باستخدام JVM:
# Linux / Mac
chmod +x client.sh server.sh
./client.sh
./server.sh
# Windows
client.bat
server.bat
ملاحظة: تحتوي نصوص التشغيل هذه على متغيرات مفيدة، بما في ذلك المسار إلى ملف Java القابل للتنفيذ.
قد تحتاج إلى تغييره إذا لم يكن في PATH أو إذا كنت تستخدم إصدارات متعددة من Java.
يتم إنشاء تهيئة الخادم تلقائيًا إذا لم تكن موجودة
وبعد ذلك يتم تحميلها من server.json في نفس الدليل الذي يعمل فيه الخادم:
{
"network": {
"serverHost": "0.0.0.0",
"serverPort": 8765
}
}
يمكن تحديد تهيئة العميل في التطبيق الجاري.
ينقسم المشروع إلى ثلاث وحدات:
تحتوي الرسائل المنقولة بين الخادم والعميل على التنسيق البسيط التالي:
[type][target][length][payload]
32b 32b 32b ???
هذه الأجزاء الأربعة لها المعاني التالية:
من أجل إرسال حمولات مخصصة، قد يتعين عليك تحديث طول الحمولة.
وإلا فلن تعمل بشكل صحيح. في البرنامج التعليمي يتم تطوير سكربت تلقائي لإصلاح بايتات طول الحمولة تلقائيًا.
يحتوي تطبيق خادم-عميل ضعيف (VuCSA) على عدة ثغرات أمنية يمكن استغلالها بطرق مختلفة. يستخدم الدليل الرسمي لاستغلال هذه الثغرات أداة PETEP مفتوحة المصدر (انظر منهجية PETEP).
في منهجية PETEP، يتم شرح العملية الكاملة لاستغلال التحديات، بما في ذلك الحمولات المفيدة.