
ورشة عمل خطوة بخطوة لاستغلال نقاط الضعف المختلفة في تطبيقات Node.js و Java
في ورشة العمل هذه خطوة بخطوة، ستتعلم كيفية استغلال العديد من الثغرات الواقعية الموجودة في إصدارات ضعيفة من الحزم في تطبيق Node.js و Java.
يمكنك إجراء ورشة العمل هذه بطريقتين مختلفتين
أو
ستأخذك ورشة العمل هذه من خلال تثبيت واستغلال عدد من التطبيقات المعرضة للخطر عمدًا. ستستخدم التطبيقات حزمًا حقيقية ذات ثغرات معروفة، بما في ذلك:
توجد هذه الاستغلالات في عدد من التطبيقات، ومعظمها ستحتاج إلى تثبيته محليًا أو على مثيل سحابي. سترشدك التعليمات أدناه من خلال التثبيت المحلي، ولكن يمكنك أيضًا تجربتها على مثيلات سحابية عن بُعد.
لكل قسم ثغرة في ورشة العمل هذه، ستتلقى معلومات حول الثغرة بالإضافة إلى الحزمة التي توجد بها. نشجعك على محاولة اختراق التطبيق عن طريق التجربة والخطأ دون قراءة أي تلميحات في البداية. حاول التفكير في كيفية خداع تنقية التطبيق والدخول إلى عقل المخترق. التلميحات موجودة عندما تتعثر، لذا اقرأها بالترتيب عند الحاجة إلى المساعدة. إذا تمكنت من إكمال الاختراق دون تلميحات، فهذا رائع! ومع ذلك، قد يكون من الجيد قراءة التلميحات بعد ذلك للتأكد من أنك اخترقت بنفس الطريقة التي فعلناها! بالإضافة إلى ذلك، قد تكون هناك نصائح صغيرة للتعلم منها أيضًا.
بناءً على اختيارك، اختر دليل التثبيت المناسب
من متصفحك المفضل، انتقل إلى http://localhost:3001 ويجب أن ترى الصفحة التالية.

اقضِ بضع دقائق في تصفح الموقع، وعلى وجه الخصوص، أنشئ بعض عناصر المهام باستخدام نص عادي "Buy Milk" بالإضافة إلى استخدام ماركداون "Buy **lots** of milk". أيضًا، انتقل إلى صفحة "حول" المتواضعة المرتبطة من أسفل الصفحة الرئيسية. استمتع بـ CSS-foo المستخدمة لإنشاء صفحة "حول" هذه. ملاحظة: لن يتم دمج طلبات السحب التي تجعل هذه الصفحة تبدو أجمل ;o)

أولاً، دعنا ننظر إليه من الجانب الأزرق (الدفاعي). قم بعمل Fork لتطبيق Goof إلى حساب GitHub الخاص بك. يمكن العثور على التطبيق على GitHub هنا: https://github.com/snyk/goof. نحتاج إلى فحص تطبيقنا لفهم التبعيات المباشرة وغير المباشرة الموجودة في التطبيق، بالإضافة إلى الثغرات في كل مكتبة. للقيام بذلك، انتقل إلى https://snyk.io وانقر على "Sign up" أو "Log in" (إذا كنت مستخدمًا بالفعل)، في أعلى يمين الموقع:

انقر على زر "Log in with your GitHub":

بعد ذلك، قم باستيراد مشروع Goof الذي قمت باستنساخه سابقًا. حدد goof من قائمة مستودعات GitHub الخاصة بك وانقر على زر "Import Projects" في أعلى يمين النافذة.

عندما يتم فحص المشروع، ستراه في لوحة التحكم الخاصة بك:

انقر على رابط package.json لرؤية صفحة المشروع، والتي تتضمن القائمة الكاملة لثغرات الأمان:

يمكنك النقر على علامات التبويب "issues" و "dependencies" لرؤية المزيد من المعلومات حول الثغرات وعلاجها بالإضافة إلى مكان تقديمها بواسطة تطبيقك. ستلاحظ في أسفل قائمة الثغرات وجود ثغرة اجتياز الدليل في حزمة st. دعنا ننظر إلى هذا بمزيد من التفصيل.

يهدف هجوم اجتياز الدليل (المعروف أيضًا باسم path traversal) إلى الوصول إلى الملفات والدلائل المخزنة خارج المجلد المقصود. من خلال معالجة الملفات بتسلسلات "dot-dot-slash" (../) واختلافاتها، أو باستخدام مسارات الملفات المطلقة، قد يكون من الممكن الوصول إلى أي ملفات ودلائل مخزنة على نظام الملفات، بما في ذلك كود مصدر التطبيق، والتكوين، وملفات النظام الهامة الأخرى.
يمكن تقسيم ثغرات اجتياز الدليل عمومًا إلى نوعين:
الحزمة في تطبيق Goof التي تحتوي على ثغرة اجتياز الدليل التي سنستغلها هي حزمة st. ألقِ نظرة على وثائق st وتعرف على المكتبة.
يجب الآن أن تكون على دراية بما هو اجتياز الدليل، وما تفعله حزمة st، ويمكنك المضي قدمًا واختراق التطبيق -- لقد عدت إلى الفريق الأحمر الآن! ابحث في التطبيق عن مكان استخدام حزمة st وحاول الانتقال إلى دليل لا يُسمح لك بالوصول إليه.
فيما يلي بعض التلميحات لإعطائك أدلة إذا علقت - حاول قدر الإمكان النظر إليها فقط بعد أن تجرب بنفسك وتحتاج إلى المساعدة.
انقر لرؤية التلميح 1.
انقر لرؤية التلميح 2.
انقر لرؤية التلميح 3.
انقر لرؤية التلميح 4.
انقر لرؤية التلميح 5.
انقر لرؤية التلميح 6.
انقر لرؤية التلميح 7.
انقر لرؤية التلميح 8.
انقر لرؤية التلميح 9.
تصفح نظام الملفات الخاص بك كما لو كنت مهاجمًا للعثور على 3 قطع من المعلومات الحساسة على جهازك والتي ربما لا تريد أن يراها المهاجم.
انقر لرؤية التلميح 10.
ألقِ نظرة على وصف الثغرة، بما في ذلك درجة CVSS: https://snyk.io/vuln/npm:st:20140206. لماذا تعتقد أن الثغرة متوسطة الخطورة بدلاً من عالية؟
مرة أخرى في صفحة مشروع Snyk، ابحث عن ثغرة اجتياز الدليل في حزمة st وانظر إلى نصائح العلاج. سترى أن هناك مسارًا واحدًا فقط لهذه الثغرة في التطبيق، وأن حزمة st هي تبعية مباشرة، لذا لا ينبغي أن يكون العلاج صعبًا للغاية. يمكننا أن نرى أننا بحاجة إلى تحديث إصدار حزمة st إلى 0.2.5. يمكننا القيام بذلك تلقائيًا، عن طريق النقر على زر "Fix this vulnerability".

سترى قائمة بالثغرات الخاصة بك، ويجب تحديد ثغرة st فقط. قم بالتمرير إلى أسفل الصفحة وانقر على "Open a fix PR":

ألقِ نظرة على تغييرات الكود في طلب السحب تحت علامة التبويب "Files Changed":