यदि मेरा सर्वर शेलशॉक बग के लिए असुरक्षित है तो परीक्षण कैसे करें?


80

मैं यह सुनिश्चित कर सकता हूं कि अपडेट के बाद मेरा बैश इंस्टॉलेशन शेलशॉक बग के लिए असुरक्षित नहीं है ?



कृपया ध्यान दें कि अभी भी अप्रकाशित bash (CVE-2014-7186 और CVE-2014-7187) में दो अन्य कमजोरियां हैं।
हिरण

सीवीई -2014-7186 और सीवीई-2014-7187 को ठीक करने वाले पैच लंबे समय के बाद उपलब्ध नहीं हैं जब हिरण ने अपनी टिप्पणी पोस्ट की। यदि आपके पास CVE-2014-7169 के लिए एक डिस्ट्रो प्रदान पैच है, तो आपके पास पहले से ही 7186/7187 को ब्लॉक करने के लिए पर्याप्त हो सकता है, नीचे दिए गए आदेशों के साथ अपने सिस्टम का परीक्षण करें और देखें। अपने डिस्ट्रो के लिए किसी भी अधिक सुरक्षा अपडेट के लिए भी देखें।
बेवुल्फनोडे42

जवाबों:


83

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। यदि यह पर्ल चलता है या यदि यह शिकायत करता है कि पर्ल स्थापित नहीं है जो निश्चित रूप से विफल है। मुझे किसी अन्य विफलता विशेषताओं पर यकीन नहीं है क्योंकि मेरे पास अब कोई अप्रकाशित प्रणाली नहीं है।


CVE-2014-6278 के लिए जाँच करने के लिए। फिर से, मैं इस बात पर 100% निश्चित नहीं हूँ कि क्या यह परीक्षण अब मेरे पास कोई अप्रकाशित प्रणाली है।

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

इस परीक्षण के लिए एक पास यह है कि यह केवल पाठ को वापस प्रतिध्वनित करना चाहिए testing CVE-2014-6278। अगर तुम्हारा hi momकहीं भी वापस जाना है जो निश्चित रूप से विफल है।


1
क्या हम इसमें सामान्य परीक्षण जोड़ सकते हैं foo='() { echo not patched; }' bash -c foo? जब तक फ़ंक्शन निर्यात को अलग नामस्थान में नहीं रखा जाता है, तब तक हम एक पार्सर बग से अगले तक चलना बंद नहीं करेंगे।
billyw

क्या उस परीक्षण में सीवीई है? क्या आपके पास इस समस्या का वर्णन करने के लिए कोई संदर्भ है? इसके अलावा इस तरह की जानकारी शेल के बारे में अन्य प्रश्नों में से एक के कारण हो सकती है क्योंकि यह क्यू मौजूदा पैच की सफलता या विफलता का परीक्षण करने के बारे में है।
बियोवुल्फ़नोडे 42

यह कुछ आगामी शेलशॉक सीवीई ( lcamtuf.blogspot.com/2014/09/… ) पर मिशाल ज़ाल्स्की के ब्लॉग पोस्ट से है । यह CVE-2014-6278 के लिए उनका सुझाया गया परीक्षण है, जो अभी भी गैर-सार्वजनिक है। ऐसा लगता है कि मैं परीक्षण की व्यापकता के बारे में गलत था, हालांकि; मैं पहले से ही एक ऐसे मामले का सामना कर चुका हूं, जहां ज़ाल्वस्की का टेस्ट पास हुआ लेकिन CVE-2014-7187 का टेस्ट फेल हो गया।
billyw

और यहां CVE-2014-6277 और CVE-2014-6278 पर पूरा खुलासा किया गया है, साथ ही उनके लिए जाँच करने के आदेश दिए गए हैं: seclists.org/fulldisclosure/2014/Oct/9
billyw

नोट का एक बिंदु: भले ही BASH का संस्करण असुरक्षित है, अगर कुछ भी इसका उपयोग नहीं करता है (यानी डेमॉन द्वारा उपयोग किए जाने वाले सभी खाते, जैसे "www" या "कप" या जो भी हो) BASH के साथ उनके डिफ़ॉल्ट शेल के रूप में कॉन्फ़िगर किए गए हैं, और इनमें से कोई भी नहीं आपके कोड कॉल सिस्टम () या जैसे, कमजोर संस्करण होने का जोखिम कम हो सकता है, लेकिन फिर भी, जितनी जल्दी हो सके BASH को अपग्रेड करें।
DTK

32

विशेष रूप से तैयार किए गए पर्यावरण चर का निर्यात करें, जिसका मूल्यांकन स्वतः बैश के कमजोर संस्करणों द्वारा किया जाएगा:

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

अब यह देखने के लिए एक साधारण प्रतिध्वनि निष्पादित करें कि क्या बैश $ टेस्टबग में कोड का मूल्यांकन करेगा, भले ही आपने उस चर का स्वयं उपयोग न किया हो:

$ bash -c "echo Hello"
VULNERABLE
Hello

यदि यह "VULNERABLE" स्ट्रिंग दिखाता है, तो उत्तर स्पष्ट है। अन्यथा, आपको चिंता करने की आवश्यकता नहीं है और बैश के आपके पैच किए गए संस्करण ठीक हैं।

कृपया ध्यान दें कि कई पैच प्रमुख लिनक्स वितरणों द्वारा जारी किए गए हैं और कभी-कभी वे पूरी तरह से भेद्यता को ठीक नहीं करते हैं। इस बग के लिए सुरक्षा सलाह और सीवीई प्रविष्टि की जांच करते रहें ।


5
CVE-2014-6271 के अलावा, विशेष रूप से Red Hat से अपूर्ण फ़ोकस की अपनी एक विशेषता है जो निम्नलिखित के लायक भी है: CVE-2014-7169
डॉकमैक्स

3
वन-लाइनर जो आपके शेल एनवी को प्रदूषित नहीं करता है और तब भी होता है जब 'ऑल्टरनेट लॉगिन खोल (जिसके बारे में आपको पता न हो export) का उपयोग करके काम करना हो सकता है :env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ल्लोकी

1
यहाँ कुछ Ubuntu विशिष्ट विवरण हैं askubuntu.com/questions/528101/… - व्यक्तिगत रूप से मुझे समस्या को ठीक करने के लिए Ubuntu 13.10 से 14.04 तक अपग्रेड करना था
dodgy_coder

2

शेलशॉक व्यावहारिक रूप से बैश की एक से अधिक भेद्यताओं का एक संयोजन है , और इस समय इस बात की भी जानकारी नहीं है कि इस भेद्यता का शोषण करता है , इसलिए शेलशॉक एक ऐसा मुद्दा हो सकता है जो अभी भी खुला है, इस मुद्दे के बारे में रेडहैट के अपडेट के साथ एक धागा है

रेडहैट ने निम्नलिखित को पुनः शामिल किया:

चलाने के आदेश:

$ 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

आप कमजोर नहीं हैं।

शेलशॉक चेक का दूसरा हिस्सा CVE-2014-7169 भेद्यता जांच है यह सुनिश्चित करता है कि सिस्टम फ़ाइल डिज़ाइन समस्या से सुरक्षित है। यह जांचने के लिए कि क्या आपका बैश संस्करण 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

मैंने CGI लिपियों पर कमजोरियों के लिए अपने वेबसर्वर का परीक्षण करने के लिए ShellShocker नामक एक CLI उपयोगिता लिखी थी। अपनी साइट का परीक्षण करने के लिए, आप दौड़ेंगे:

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

अर्थात

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

संपादित करें: इस उपयोगिता को नीचे ले जाया गया है, क्षमा करें: '(


आपका लिंक मृत है
SSK

@SSK क्षमा करें;) गलती।
लियाम मार्शल

आपका लिंक अभी भी मृत है।
एमएक्स

हाँ, माफ करना, मैं इसे नीचे ले लिया। इसका उन तरीकों से शोषण किया जा रहा था, जो मुझे पसंद नहीं थे।
लियाम मार्शल

1

आप इस ऑनलाइन परीक्षा में अपना CGI URL सबमिट कर सकते हैं:

http://shellshock.iecra.org


4
यह पतन के कारणों को प्रदान करने के लिए विनम्र है।
डेविड

4
"हम सभी स्कैन लॉग करते हैं" ??? डरावने। मैं अजगर को डाउनलोड करता हूं और उसे खुद चलाता हूं।
ब्रैड

1
@ कम से कम वे आपको बता रहे हैं। मुझे यकीन है कि अगर मैं एक व्हाइटहाट सुरक्षा सेवा प्रदान कर रहा था, जो इस सेवा की पेशकश करता है तो मैं अच्छी तरह से एक लॉग रख सकता हूं (यदि केवल एक व्यक्तिगत विवरण के साथ कोई काउंटर हो) कितने लोगों ने नेत्रहीन रूप से अपनी साइट के विवरण को एक वेबसाइट में दर्ज किया जो कहा जा रहा था परीक्षण की पेशकश करने वाली साइट की प्रामाणिकता के बारे में बहुत कुछ जानने के बिना, एक प्रवेश परीक्षा का प्रयास करें ... और वे चाहते हैं कि कोई ऐसा व्यक्ति जो किसी अन्य से संबंधित संवेदनशील साइटों को खोजने के लिए अपनी सेवा का उपयोग करता है, उस स्थिति में क्या परीक्षण किया।
रोब मोइर

-1

env x = '() {:;}; इको कमजोर 'बैश -c "इको यह एक परीक्षण है" और यदि यह असुरक्षित है और यह एक परीक्षण है तो इसका अर्थ है कि आपका OSX / Linux मशीन प्रभावित है। उपाय है बैश के नवीनतम संस्करण को अद्यतन करना।


6
जड़ के रूप में क्यों? पूरी तरह से अनावश्यक।
मैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.