
مختبر وإثبات المفهوم
يبدو أن هذا المستودع مشروع بحثي لإثبات المفهوم للتحقق من مشكلة إلغاء التسلسل ومعالجة جزء الأدوات (ToolPane) بأسلوب SharePoint في بيئة مختبرية خاضعة للتحكم. يتضمن برنامج تشغيل بلغة Python، وتطبيقًا وهميًا قابلًا للاستغلال، وموارد حاويات للاختبار المعزول.
[!WARNING] يجب استخدام هذا المشروع فقط في الأنظمة أو الحاويات أو الشبكات التي تملكها أو التي لديك إذن صريح لاختبارها. لا تقم بتشغيل هذا الكود ضد البنية التحتية العامة أو خدمات الطرف الثالث أو بيئات الإنتاج أو أي هدف دون إذن كتابي. قد يشكل الاختبار الأمني غير المصرح به مخالفة للقانون أو العقد أو السياسة أو شروط الاستخدام المقبول.
يجب التعامل مع محتويات هذا المستودع باعتبارها مادة بحثية أمنية حساسة. إذا استخدمت هذا المشروع لأعمال التقييم، فاحرص على عزل التنفيذ، وسجّل جميع الأنشطة، ونسّق مع مالك النظام قبل الاختبار.
يحتوي المستودع حاليًا على:
sploit.py: برنامج تشغيل بلغة Python غير متزامن يرسل طلبات مصمّمة بعناية إلى نقطة نهاية ToolPane.lab/mock_vulnerable_app.cs: تطبيق ASP.NET وهمي يعكس علامة تحقق، وبشكله الحالي يمكنه تنفيذ أمر معلوم داخل حاوية المختبر.lab/docker-compose.yml: مختبر محلي من حاويتين يفصل الهدف الوهمي عن طرفية المهاجم.lab/Dockerfile: بناء .NET متعدد المراحل ينشر التطبيق الوهمي القابل للاستغلال في صورة أصغر لوقت تشغيل ASP.NET ويشغّله كمستخدم غير جذر.lab/attacker.Dockerfile: تعريف حاوية المهاجم بلغة Python، يثبّت مسبقًا مجموعة تبعيات السكربت اللازمة لطرفية المختبر.lab/vulnerable.csproj: ملف مشروع ويب .NET 6 للتطبيق الوهمي القابل للاستغلال.lab/genGadget.py: سكربت مساعد لتوليد حمولة Base64 مضغوطة لاختبار إلغاء التسلسل في المختبر فقط.سير العمل هذا مخصص للمختبر المحلي فقط.
المتطلبات الأساسية:
ابدأ المختبر من دليل lab/:
cd lab
docker-compose up --build -d
إذا كانت بيئة Docker لديك تتطلب صلاحيات مرتفعة، فشغّل الأوامر نفسها باستخدام sudo.
تأكد من أن الحاويتين تعملان:
docker-compose ps
عرض السجلات في حال وجود مشكلات أو للتحقق من الاستغلال:
docker logs sp_attacker
docker logs sp_vulnerable_lab
المختبر معزول عن قصد:
lab_net الداخلية؛افتح طرفية داخل حاوية المهاجم:
docker exec -it sp_attacker bash
من داخل حاوية المهاجم، يمكنك تنفيذ فحوصات آمنة للمختبر مثل تأكيد أن الهدف يمكن الوصول إليه واختبار السكربت في وضع التحقق ضد الهدف الوهمي:
python3 sploit.py http://sp_vulnerable_lab/
# If service-name DNS resolution fails in your environment, use the lab IP:
# python3 sploit.py http://10.10.10.5
# If you wish to go past base validation you can include wanted commands.
python3 sploit.py http://sp_vulnerable_lab whoami
السلوك المتوقع في بيئة المختبر المحلية الوهمية:
http://sharepoint-target من حاوية المهاجم؛ملاحظات تشغيلية:
أوقف الحاويات والشبكة الخاصة بالمختبر وأزلها:
cd lab
docker-compose down
إذا أردت إزالة الصور المُبنية أيضًا:
docker-compose down --rmi local
إذا أردت إعادة تعيين كاملة لنواتج مساحة عمل المختبر، فاحذف أي ملفات نتائج مولّدة بعد الإيقاف:
rm -f vuln.lst
ممارسة التنظيف الموصى بها بعد كل تمرين:
docker-compose down؛المشروع صالح هيكليًا كمختبر بحثي محلي، لكن لا ينبغي التعامل معه بشكله الحالي كأداة تحقق آمنة للإنتاج.
ما يعمل بشكل صحيح:
ما يتطلب الحذر:
vuln.lst، مما قد يخلق بيانات حساسة متبقية غير ضرورية.استخدم هذا المشروع فقط للتحقق المتحكم به من الاكتشاف والتعرض، وليس للاستغلال التشغيلي.
المنهجية الموصى بها:
لأعمال التقييم في العالم الحقيقي، المعيار الأكثر أمانًا هو استبدال التحقق بأسلوب الاستغلال بواحدة أو أكثر مما يلي:
إذا كان الهدف عرضة فعليًا لثغرة إلغاء تسلسل في مكوّن تطبيق مميز، فقد يكون الأثر المحتمل وخيمًا:
حتى في المختبر، ترفع دلالات تنفيذ الأوامر المخاطر بشكل كبير لأنها تطبّع سير عمل يجب أن يقتصر على تحقيق مُصرّح به وخاضع لرقابة مشددة.
مسار التخفيف المناسب هو دفاعي ومتعدد الطبقات.
إجراءات فورية:
إجراءات التحصين:
/_layouts/15/ToolPane.aspx والمسارات الإدارية المجاورة.تخفيفات خاصة بمختبر الأبحاث:
لا يوفّر ملف README هذا إرشادات لاستغلال الأنظمة الحية. بل يوثّق المستودع كأداة بحثية خاضعة للتحكم، ويعرض ممارسات أكثر أمانًا للتحقق والتخفيف.