سؤال كيفية اختبار ما إذا كان الخادم الخاص بي عرضة لعلة ShellShock؟


كيف يمكنني التأكد من أن تركيبي Bash غير قابل للتأثر بـ إرتجاج دماغي علة بعد الآن بعد التحديثات؟


77
2017-09-25 14:25


الأصل


نرى هل هناك أمر قصير لاختبار ما إذا كان الخادم الخاص بي آمنًا ضد خطأ bash shellshock؟ - Martin Schröder
يرجى ملاحظة وجود نقطتين أخريتين من نقاط الضعف في باش لا تزال غير مثبتة (CVE-2014-7186 و CVE-2014-7187). - Deer Hunter
تتوفر الرقع التي تعمل على إصلاح CVE-2014-7186 و CVE-2014-7187 منذ فترة ليست طويلة بعد نشر دير هنتر تعليقه. إذا كان لديك تصحيح توزيعي تم توفيره لـ CVE-2014-7169 ، فقد يكون لديك بالفعل ما يكفي لمنع 7186/7187 ، واختبر النظام الخاص بك باستخدام الأوامر أدناه ورؤيته. تحقق أيضًا من وجود أية تحديثات أمنية أخرى للتوزيعة الخاصة بك. - BeowulfNode42


الأجوبة:


للتحقق من وجود ثغرة CVE-2014-6271

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

لا ينبغي أن يردد كلمة الضعيفة.


للتحقق من وجود ثغرة CVE-2014-7169
(تحذير: إذا فشلت في ذلك ، فستقوم بالكتابة أو الكتابة فوق ملف يسمى /tmp/echo يمكنك حذفها بعدها ، ويجب حذفها قبل الاختبار مرة أخرى)

cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo

يجب أن يقول كلمة تاريخ ثم يشكو مع رسالة مثل cat: echo: No such file or directory. إذا كان بدلا من ذلك يخبرك ما هو التاريخ والوقت الحالي هو نظامك عرضة للخطر.


للتحقق من CVE-2014-7186

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"

لا ينبغي أن يردد النص CVE-2014-7186 vulnerable, redir_stack.


للتحقق من CVE-2014-7187

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"

لا ينبغي أن يردد النص CVE-2014-7187 vulnerable, word_lineno.


للتحقق من CVE-2014-6277. لست متأكدًا بنسبة 100٪ من هذا الأمر لأنه يبدو أنه يعتمد على نظام مصحح جزئيًا لم يعد بإمكاني الوصول إليه.

env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"

نتيجة النجاح في هذا واحد هو تكرار النص فقط testing CVE-2014-6277. إذا كان يتم تشغيل perl أو إذا كان يشتكي من عدم تثبيت perl وهو بالتأكيد فشل. لست متأكدًا من خصائص الفشل الأخرى حيث لم يعد لدي أي أنظمة غير مثبتة.


للتحقق من CVE-2014-6278. مرة أخرى ، لست متأكدًا بنسبة 100٪ مما إذا كان هذا الاختبار لم يعد لدي أي أنظمة غير مثبتة.

env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"

التمريرات الخاصة بهذا الاختبار هي أنه يجب فقط إعادة قراءة النص testing CVE-2014-6278. إذا كان صدى لك مرة أخرى hi mom في أي مكان وهذا هو بالتأكيد الفشل.


83
2017-09-26 07:49



هل يمكننا إضافة الاختبار العام؟ foo='() { echo not patched; }' bash -c foo الى هذا؟ حتى يتم وضع الصادرات الوظيفية في مساحة اسم منفصلة ، لن نتوقف عن العمل من خطأ محلل واحد إلى التالي. - billyw
هل يحتوي هذا الاختبار على CVE؟ هل لديك أي إشارات لوصف هذه المشكلة؟ قد ينتمي هذا النوع من المعلومات أيضًا إلى أحد الأسئلة الأخرى حول shellshock نظرًا لأن Q هذا يتعلق بكيفية اختبار نجاح أو فشل التصحيحات الحالية. - BeowulfNode42
هذا من تدوينة ميكال زاليفسكي على مدونة Shellshock CVE القادمة (lcamtuf.blogspot.com/2014/09/...). إنه اختباره المقترح لـ CVE-2014-6278 ، والذي لا يزال غير عام. يبدو أنني كنت مخطئا بشأن عمومية الاختبار ، لقد واجهت بالفعل حالة تم فيها اختبار Zalewski لكن اختبار CVE-2014-7187 فشل. - billyw
وهنا الكشف الكامل عن CVE-2014-6277 و CVE-2014-6278 ، جنبا إلى جنب مع الأوامر للتحقق منها: seclists.org/fulldisclosure/2014/Oct/9 - billyw
نقطة واحدة من الملاحظة: حتى إذا كان إصدار BASH ضعيفًا ، إذا لم يستخدمه أي شيء (أي يتم استخدام جميع الحسابات المستخدمة بواسطة daemons ، مثل "www" أو "cups" أو أيًا كان) مع BASH كقاعدة افتراضية ، رموزك تستدعي النظام () أو ما شابه ذلك ، فقد يكون الإصدار الضعيف أقل خطورة ، ولكن مع ذلك ، قم بترقية BASH في أقرب وقت ممكن. - DTK


تصدير متغير بيئة مصمم خصيصًا سيتم تقييمه تلقائيًا بواسطة إصدارات Bash الضعيفة:

$ export testbug='() { :;}; echo VULNERABLE'

الآن تنفيذ صدى بسيط لمعرفة ما إذا كان باش سيقيم الكود في testbug $ على الرغم من أنك لم تستخدم هذا المتغير بنفسك:

$ bash -c "echo Hello"
VULNERABLE
Hello

إذا كان يظهر سلسلة "VULNERABLE" ، فإن الإجابة واضحة. خلاف ذلك ، لا داعي للقلق والإصدار الخاص بك مصححة من باش هو موافق.

يرجى ملاحظة أنه تم إصدار عدة تصحيحات بواسطة توزيعات لينكس الرئيسية وأحيانًا لا تعمل على إصلاح الثغرة الأمنية تمامًا. الحفاظ على التحقق من النصائح الأمنية و دخول CVE لهذا الخطأ.


32
2017-09-25 14:25



بالإضافة إلى CVE-2014-6271 ، فإن الإصلاح غير المكتمل من Red Hat له خصوصيته يستحق أيضًا ما يلي: CVE-2014-7169. - DocMax
بطانة واحدة لا تلوث shell env الخاص بك وتصادف العمل حتى إذا كنت تستخدم shell تسجيل دخول بديل (والذي قد لا يعرفه export): env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello" - Lloeki
هناك بعض تفاصيل Ubuntu المحددة هنا askubuntu.com/questions/528101/... - أنا شخصياً اضطررت إلى الترقية من أوبونتو 13.10 إلى 14.04 لإصلاح المشكلة - dodgy_coder


ShellShock هو عمليا اقتران بأكثر من ثغرات باش واحدةو في هذه اللحظة هناك أيضا malaware يستغل هذا الضعف، لذلك ShellShock يمكن أن يكون مشكلة ما زالت مفتوحة ، هناك الموضوع مع تحديثات من RedHat حول هذه القضايا.

ردهات recommeds ما يلي: 

الأمر Run:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

إذا كان الناتج هو:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

ليس لديك أي حل.

إذا كان الناتج هو:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test

عندك CVE-2014-6271 حل

إذا كان الإخراج الخاص بك هو:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

أنت لست عرضة للخطر.

الجزء الآخر من فحص ShellShock هو التحقق من الثغرة CVE-2014-7169 يضمن أن النظام محمي من مشكلة إنشاء الملف. لاختبار ما إذا كان إصدار Bash الخاص بك عرضة لـ CVE-2014-7169 ، قم بتشغيل الأمر التالي:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014

إذا كان النظام الخاص بك ضعيفًا ، فسيتم عرض الوقت والتاريخ وسيتم إنشاء / tmp / echo.

إذا لم يكن نظامك ضعيفًا ، فسترى مخرجات مشابهة لما يلي:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

2
2017-09-29 14:43





كتبت أداة CLI تسمى ShellShocker لاختبار خادم الويب الخاص بك عن نقاط الضعف في النصوص البرمجية CGI. لاختبار موقعك ، يمكنك تشغيل:

python shellshocker.py <your-server-address>/<cgi-script-path>

أي

python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi

تحرير: تم أخذ هذه الأداة إلى أسفل ، آسف: '(


2
2017-09-26 17:24



وصلتك ميت - SSK
تضمين التغريدةSSK عذرا ؛) Mistype. - Liam Marshall
رابطك لا يزال ميتا. - Mxx
أجل ، آسف ، لقد أخذته كان يجري استغلالها بطرق لم يعجبني. - Liam Marshall


يمكنك إرسال عنوان URL الخاص بـ CGI إلى هذا الاختبار عبر الإنترنت:

http://shellshock.iecra.org


1
2017-09-25 20:46



من المهذبة تقديم أسباب التراجع. - David
"نحن بتسجيل جميع عمليات الفحص" ؟؟ مخيف. كنت تحميل بيثون وتشغيله بنفسي. - Brad
@ براد على الأقل انهم يقولون لك. أنا متأكد من أنني إذا كنت أقدم خدمة أمن بيضاء تقدم هذه الخدمة ، فربما احتفظ بسجل (إذا كان عدادًا بدون تفاصيل فردية) عن عدد الأشخاص الذين دخلوا تفاصيل موقعهم بشكل أعمى إلى موقع ويب يقول إن ذلك كان لمحاولة اختبار الاختراق ، من دون معرفة الكثير عن أصالة الموقع الذي يقدم الاختبار ... وسيريدون معرفة من قام باختبار ما في حالة استخدام شخص ما لخدماته للعثور على المواقع الضعيفة التي تنتمي إلى الآخرين ، أيضًا ... - Rob Moir


type env x = '() {:؛}؛ صدى الضعيفة "bash -c" صدى هذا هو اختبار "وإذا كان هذا عرضة للخطر وهذا هو الاختبار فهذا يعني أن جهاز OSX / Linux الخاص بك يتأثر. Remedy هو التحديث إلى أحدث إصدار من bash.


-1
2017-09-27 11:33



لماذا كجذر؟ غير ضروري تماما. - Mat