-->

شرح ثغرة Shell Injection

شرح ثغرة 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 لنعلم بأنه يمكننا تنفيذ أكثر من أمر في الوقت نفسه.

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

جميع الحقوق محفوضة لدى مدونة محترفي الحماية 2014-2015

تصميم : إياد عرفاوي