السلام عليكم , في عام 2014 ظهرت ثغرة بعنوان Shellshock سيكون شرح اليوم مفصل لها للاغراض الاكاديمية .

 

Presentation1222

ما هي ثغرة Shellshock ؟  

ثغرة Shellshock هي عبارة عن خطأ برمجي في مُفسر الأوامر bash هو اختصار ل”Bourne-again shell” ومثال عن ثغرات ACE

(Arbitrary code execution) ، تحتاج ثغرات ACE  الى فهم متطور للغاية لكل من تنفيذ الاوامر والاجزاء الداخلية لعملية التنفيذ بالاضافة الى معرفة بتخطيط الذاكرة و لغة assembly مختصر الأمر .. تحتاج الى خبير في هذه المجالات !  ، المهاجم يستخدم ثغرة ACE لرفع او تنفيذ برنامج يعطيه طريقة سهلة للتحكم في الة الهدف  ، هذا غالباً يتحقق بتنفيذ ما يسمى “Shell” وال”Shell” هو عبارة عن سطر اوامر حيث تضع يمكن للاوامر ان تدخل وتنفذ.

ثغرة الShellshock في مشكلة بحد ذاتها لانها تمحي الاحتياج لاي مهارات ومعرفة خاصة , وتعطي طريقة سهلة (سهلة جداً) للاستيلاء والسطيرة على كمبيوتر اخر (كخادم ويب مثلاً) وجعله ينفذ الاكواد .

سبب سهولة ثغرة Shellshock

حين يتسلم خادم ويب او سيرفر طلب فانه مكون من ثلاث مقاطع يمكن ان تكون مصابة لثغرة Shellshock : الURL المطلوب , الhttp header او المعلومات المدخلة ما يسمى “arguments” (حين تكتب اسمك وايميلك وتعليق في isecur1ty سيتم ارسالها كarguments) وكنا قد شرحنا سابقاً إستخدام الـ HTTP HEADER في عملية اختبار الاختراق يمكنك ايجادها هنا ، الأن نقوم بعمل مثال بسيط لو استقبل سيرفر موقعنا طلب بسيط سيكون كالاتي :

 

 

 

 

في الطلب السابق يمكنك رؤية الHeader وما يحتويه من معلومات عن المتصحف او المستخدم مثلا / هو طلب للصفحة الرئيسية و

Accept-Encoding ..الخ  هذه المعلومات تقدم للسيرفر ليعرف نوع المتصفح وما هو اللغة المفضلة والموقع المراد طلبه ونوع حزمة الاتصال وليس من الشائع لهذه المعلومات ان يتم تحويلها لمتغيرات في داخل السيرفر ليقوم بدارستها.

فرضاً ستظهر للسيرفر الذي طلب به صفحة موقعنا بالشكل التالي :

 

 

 

 

في حالة بقاء هذه المتغيرات في برنامج السيرفر نفسه بدون الخروج لبرامج اخرى فان السيرفر غير مصاب بثغرة Shellshock .

Shellshock تحدث حين يتم تمرير هذه المتيغرات الى برنامج اخر يسمى “bash” وكما ذكرنا سابقا فهو مفسر ومنفذ الاوامر في انظمة Linux , في الكثير من الاحيان السيرفرات تحتاج الى تمرير هذه المتغيرات الى برامج اخرى ومن الشائع ان يتم تمرير هذه المتغيرات الى bash او shell اخر .

 

ثغرة Shellshock تحدث بالتحديد حين يقوم المهاجم بتعديل طلب HTTP الاصلي وجعله يحتوي على المتغير السحري الذي هو استغلال الثغرة
ويكون على شكل () { :; };

في الطلب يوجد نوع المتصفح فسوف يقوم المهاجم بتغيره من Mozilla/5.0 الى x() {:;}; /bin/cat /etc/passwd  وسيكون قادر على قراءة ملف passwd في النظام وعرضه في الصفحة المطلوبة . ! سوف يفوم السيرفر بقراءة الامر وتفيذه كالاتي

 

الخلل في برنامج bash سوف يقوم بقراءة الجزء الاول واهماله وبعدها تنفيذ الجزء الثاني  نعم بهذه السهولة فقط !

 

إستغلالات مُتقدمة 

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

سحب وارسال المعلومات الى ايميل المهاجم 

يمكن للمهاجم البحث عن الثغرة واستخدام هذا الكود مثلاً

سوف يقوم السيرفر اذا كان يملك صلاحيات ROOT (صلاحيات مستخدم كاملة او ما يسمى superuser ) بتنفيذ الامر whoami

الذي لايجاد اسماء المستخدمين الموجودين على السيرفر وبعدها ارسال ايميل الى myevilemail@gmail.com بعنوان example.com 1

بعدها يقوم المهاجم بدخول ايميله للحصول على المعلومات نفس التكنيك يمكن استعماله لفك ضغط وارسال ملفات الباسوردات الى الايميل .

Slide1

هجوم الإستطلاع  

يعد من احد اهم الهجمات في عالم الهاك سنتطرق له في مقالات اخرى يسمى هجوم الاستطلاع او “reconnaissance” في هجوم reconnaissance المهاجم يوقم بارسال اوامر سوف تقوم لاحقاً بارسال رسالة الى الة طرف ثالث كسيرفر مثلاً . والة الطرف الثالث  تقوم بعمل لائحة للالات المصابة التي قامت بالاتصال بها .

في السابق , كان يتم عمل الالات وتحويلها الى شبكات بوت نت او لعمل سبام او اغراض اخرى.

واحد اشهر التكنيكات المستعملة في reconnaissance هو استخدام الامر  ping لجعل الالة المصابة تقوم بارسال حزمة واحدة (تسمى ping) الى خادم طرف ثالث الذي يكون خاص بالمهاجم الاستغلال يبدو مثل :

 

 

عادة الامر ping يستعمل لاختبار هل السيرفر “alive” او موجود على الشبكة . اذا كان السيرفر مصاب بثغرة Shellshock سوف يقوم بارسال حزمة واحدة الموضوع عددها في  (-c 1)  الى hacker-server.com مع البايلود الذي تم اضافته في (-p) . البايلود هو عبارة عن رقم او رمز فريد من نوعه يتم اضافته بواسطة المهاجم ليستطيع تعقب الحزمة التي تم استلامها من قبل السيرفر المصاب .

 

 

pentest

 

 

 

التحكم بالمكونات المادية للسيرفر 

من الامور التي يمكن ارسالها للسيرفر للتحقق من اذا ما كان السيرفر مصاب يمكن ارسال

 

x هذا الامر يقوم بعمل طلب الى موقع example.com فاذا كان السيرفر مصاب سوف يقوم بفتح محرك الاقراص cd او dvd ! فاذا رايت محرك الاقراص مفتوح قد يكون الهكر جرب ال ثغرة ShellShock عليك 😛

هجوم حجم الخدمة محلياً 

بطلب بسيط مثل هذا

 

في الاستغلال اعلاه يحاول المهاجم بثلاث طرق تنفيذ الامر (sleep) لان امر  sleep قد يكون في احد المسارات bin أو sbin او usr/bin  . الامر يقوم بعمل ايقاف للسيرفر عن تنفيذ التعليمات لمدة 20 ثانية . اذا تم تاخر السيرفر فالسيرفر مصاب قد يقوم المهاجم بتاخير المدة وزيادة عدد هذه الطلبات لذلك سيكون السيرفر عاجز عن التعامل مع طلبات اخرى وبهذا يسبب DoS  .

كلمة أخيرة 

يوجد هناك انواع اخرى اكثر خطورة يمكنك الاطلاع عليها لاحقاً .

 

مصادر وروابط مفيدة 

مع تحياتي وتحيات فريق iSecur1ty ، لأي اسفتسار اترك تعليقاً أو تواصل معي عبر تويتر