السلام عليكم و رحمة الله و بركاته
معكم أخوكم أسامة ريان
تعتبر ثغرة Shell Injection من الثغرات الخطيرة على مستوى المواقع و تطبيقات الويب ، بحيث يمكن للمخترق من خلال إستغلاله لهذه الثغرة أن يقوم بتنفيذ أكواد shell scriptting أي يمكن كتابة أمر من أوامر الطرفية ( terminal ) في لينكس و يتحكم من خلال هذه الأوامر بخادم الويب و يمكن أيضا أن تكون على سيرفرات الوندوز .
بالإضافة إلى ذلك يمكن إستغلال هذه الثغرة بشكل أخطر و أكبر عن طريق جلب و تحميل ملفات من مواقع أخرى من خلال الأمر " wget " الذي يمكنك من تحميل shell code أو فايروس أو حتى تحميل ملف javascript و تحويلها إلى ثغرة xss .
بالإضافة إلى أنه يمكنك جلب ملفات من داخل السيرفر و أن تقوم بإستكشاف محتويات الملف الذي يتصل فيها السكريبت مع قاعدة البيانات و الحصول على بيانات القاعدة من إسمها و بيانات الدخول عليها ( username & password ) و السيطرة على جميع المعلومات الموجودة على الخادم !
معلومات حول الثغرة و استغلالها :
تنتج هذه الثغرة عن طريق سكريبت مكتوب بالعادة بلغة php يقوم هذا السكريبت بإستدعاء ملفات من نظام التشغيل و عرضها للمستخدم .
في الكود التالي تم إستخدام الدالة shell_exec و هي دالة يتم من خلالها تنفيذ أوامر في نظام التشغيل ، و تم إستخدام هذه الدالة لعرض محتويات الملف المرسل عن طريق تنفيذها للأمر cat .
في الشكل التالي قمت بإستدعاء و عرض ملف ( أو صفحة ويب ) دون إستخدام الدالة shell_exec و هما يؤديان نفس الأمر ، لكن الفرق بأن لكل منهما طريقته و أسلوبه بذلك بالإضافة إلى أن الثاني أكثر أمنا و خالي من ثغرة Shell Injection .
كما في الصور يتم تمرير إسم الملف بواسطة GET و يقوم الكود بعدها بعرض الملف بإستخدام الدالة shell_exec .
و لو نظرنا إلى الكود البرمجي ، نجد بأنه بعد تمرير إسم الملف بواسطة GET قام الكود بتنفيذ الأمر cat و إضافه له إسم الملف الذي تم تمريره في المتغير file و الذي هو من نوع GET .
الإستغلال :
طريقة الإستغلال بسيطة جدا ، حيث سنقوم بدمج الأمر المراد تنفيذه عن طريق إرساله و دمجه مع المتغير من نوع GET و ذلك كما في الصورة التالية :
و ما قمنا به في الصورة السابقة هو إضافة التالي لإسم الملف :
simple.txt;ls
و هذا يؤدي إلى عرض محتويات الملف و بعدها سيتم تنفيذ الأمر ls و هو أمر من أوامر ال terminal و سيتم تنفيذه بحيث يعرض محتويات المجلد الحالي .
و للتوضيح أكثر لو قمنا بنسخ ما كتبناه و ألصقناه في سكريبت من لغة shell scripting سيكون الناتج كالآتي :
بحيث قمنا بإضافة wget لنعلم بأنه يمكننا تنفيذ أكثر من أمر في الوقت نفسه .
و بهذا عرفنا بأنه يمكننا كتابة أي أمر من أوامر نظام التشغيل عند إستغلالنا لهذه الثغرة ، و بعدها يمكننا السيطرة عليه .
الموظوع مسروق حرام عليك
ردحذف
ردحذفشركة تنظيف كنب بالخبر