أمن المعلوماتبرمجة

شرح ثغرة Shell Injection

تعتبر ثغرة Shell Injection من الثغرات الخطيرة على مستوى المواقع و تطبيقات الويب. بحيث يمكن للمخترق من خلال استغلاله لهذه الثغرة أن يقوم بتنفيذ اكواد shell scriptting أي يمكن كتابة أمر من أوامر الطرفية (terminal) في لينكس و يتحكم من خلال هذه الأوامر بخادم الويب و يمكن أيضا أن تكون على سيرفرات الوندوز.

بالإضافة إلى ذلك يمكن استغلال هذه الثغرة بشكل أخطر و أكبر عن طريق جلب و تحميل ملفات من مواقع اخرى من خلال الامر “wget” الذي يمكنك من تحميل shell code او فايروس او حتى تحميل ملف javascript و تحويلها الى ثغرة xss .

بالغضافة الى انه يمكنك جلب ملفات من داخل السيرفر و ان تقوم باستكشاف محتويات الملف الذي يتصل فيها السكريبت مع قاعدة البيانات و الحصول على على بيانات القاعدة من اسمها و بيانات الدخول عليها (username & password) و السيطرة على جميع المعلومات الموجودة على الخادم !!!


معلومات حول الثغرة و استغلالها :

تنتج هذه الثغرة عن طريق سكريبت مكتوب بالعادة بلغة php يقوم هذا السكريبت بإستدعاء ملفات من نظام التشغيل و عرضها للمستخدم.

في الكود التالي تم استخدام الدالة shell_exec و هي دالة يتم من خلالها تنفيذ أوامر في نظام التشغيل, و تم استخدام هذه الدالة لعرض محتويات الملف المرسل عن طريق تنفيذها للأمر cat.

 

1

 

في الشكل التالي قمت باستدعاء و عرض ملف (أو صفحة ويب) دون استخدام الدالة shell_exec وهما يؤديان نفس الأمر, لكن الفرق بأن لكل منهما طريقته و أسلوبه بذلك بالإضافة إلى أن الثاني أكثر أمنا و خالي من ثغرة Shell Injection.

2

كما في الصور يتم تمرير اسم الملف بواسطة GET و يقوم الكود بعدها بعرض الملف بإستخدام الدالة shell_exec.

3

ولو نظرنا الى الكود البرمجي, نجد بأنه بعد تمرير اسم الملف بواسطة GET قام الكود بتنفيذ الامر cat و اضافه له اسم الملف الذي تم تمريرهفي المتغير file و الذي هو من نوع GET.

ss

الاستغلال :

طريقة الاستغلال بسيطة جدا, حيث سنقوم بدم الأمر المراد تنفيذه عن طريق إرساله و دمجه مع المتغير من نوع GET و ذلك كما في الصورة التالية :

4

و ما قمنا به في الصورة السابقة هو اضافة التالي لإسم الملف :

simple.txt;ls

و هذا يؤدي الى عرض محتويات الملف و بعدها سيتم تنفيذ الأمر ls و هو أمر من أوامر ال terminal و سيتم تنفيذه بحيث يعرض محتويات المجلد الحالي.

و للتوضيح أكثر لو قمنا بنسخ ما كتبناه و ألصقناها في سكريبت من لغة shell scripting سيكون الناتج كالآتي :

66

بحيث قمنا بإضافة wget لنعلم بأنه يمكننا تنفيذ أكثر من أمر في الوقت نفسه.

و بهذا عرفنا بأنه يمكننا كتابة أي أمر من أوامر نظام التشغيل عند استغلالنا لهذه الثغرة, و بعدها يمكننا السيطرة عليه.

الوسوم

مقالات ذات صلة

‫4 تعليقات

  1. اخي لقد قمت بفحص موقع للبحث عن الثغرات ؤكانت النتائج هذا ايجاد ثغرات من نوع عالي جدا وهم shell injction
    ؤ sQl injction و cross site scrpit include كيف استغلها لا اعلم اريد ان استغلها ؤعندما استطيع استغلالها سوف استطيع ان اقدم برهان لصاحب الموقع اني قادر على الاختراق لاجل ترقية الثغره ؤان احصل على مكافاة واشهد الله اني ليس صاحب سوؤ معلومه الموقع لبرنامج جات برنامج جات ضخم وجدت في موقعه الرسمي هذا الثغرات ماذا افعل

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

8 + one =

إغلاق