שאלה כיצד לבדוק אם השרת שלי הוא פגיע באג ShellShock?


איך אני יכול להבטיח את ההתקנה שלי Bash אינו פגיע הלם קרב באג עוד לאחר העדכונים?


77
2017-09-25 14:25




ראה האם יש פקודה קצרה לבדוק אם השרת שלי מאובטח נגד באג shashshock באש? - Martin Schröder
לידיעתך, קיימות שתי פגיעויות נוספות בבאש שטרם פורסמו (CVE-2014-7186 ו- CVE-2014-7187). - Deer Hunter
תיקונים לתקן CVE-2014-7186 ו CVE-2014-7187 זמינים לא זמן רב לאחר Deer האנטר פרסם את ההערה שלו. אם יש לך תיקון הפצה בתנאי 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 אינו מותקן כי הוא בהחלט להיכשל. אני לא בטוח על כל המאפיינים כישלון אחרים כמו שאני כבר לא צריך שום מערכות unatched.


כדי לבדוק את CVE-2014-6278. שוב, אני לא בטוח 100% אם זה מבחן כמו שאני כבר לא צריך שום מערכות unatched.

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 בגלל זה ש להיות על איך לבדוק את ההצלחה או הכישלון של תיקונים קיימים. - BeowulfNode42
זה מהפרסום בבלוג של מיכל זלבסקי על כמה מהקרנות הקרובות של Shellshock (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


ייצא משתנה סביבה בעל מבנה מיוחד שייערך באופן אוטומטי על ידי גרסאות פגיעות של Bash:

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

עכשיו לבצע הד פשוט כדי לראות אם Bash יהיה להעריך את הקוד ב testbug $ למרות שאתה לא השתמשת משתנה זה בעצמך:

$ bash -c "echo Hello"
VULNERABLE
Hello

אם זה מראה את "Vulnerable" מחרוזת, התשובה ברורה. אחרת, אתה לא צריך לדאוג ואת הגירסה שלך טלאים של Bash הוא בסדר.

שים לב כי מספר תיקונים פורסמו על ידי ההפצות הגדולות של לינוקס ולפעמים הם לא לתקן את הפגיעות לחלוטין. תמשיך לבדוק את היידוע האבטחה ואת ערך CVE עבור באג זה.


32
2017-09-25 14:25



בנוסף CVE-2014-6271, לתקן חלקי של Red Hat בפרט יש משלה כי הוא גם שווה כדלקמן: CVE-2014-7169. - DocMax
אחת אניה זה אינו מזהם את הקונכייה שלך ואת קורה לעבוד גם אם אתה משתמש באמצעות פגז כניסה חלופי (אשר אולי לא יודע על export) env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello" - Lloeki
יש כאן כמה פרטים ספציפיים של אובונטו askubuntu.com/questions/528101/... - באופן אישי הייתי צריך לשדרג מאובונטו 13.10 עד 14.04 כדי לתקן את הבעיה - dodgy_coder


ShellShock הוא כמעט יחד עם יותר מפגיעות אחת של bash, ו ברגע זה יש גם malaware כי מנצל את הפגיעות, כך ShellShock יכול להיות בעיה כי הוא עדיין פתוח, יש חוט עם עדכונים מ RedHat על בעיות אלה.

Redhat recommeds את הדברים הבאים: 

פקודת הפעלה:

$ 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 / הד תיווצר.

אם המערכת שלך אינה פגיעה, תראה פלט דומה ל:

$ 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 scripts. כדי לבדוק את האתר שלך, היה עליך לפעול:

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


תוכל לשלוח את כתובת ה- CGI שלך למבחן המקוון הזה:

http://shellshock.iecra.org


1
2017-09-25 20:46



זה מנומס לספק סיבות downvotes. - David
"אנחנו נכנסים לכל הסריקות" ??? מצמרר. הייתי מוריד את הפייתון ומפעיל אותו בעצמי. - Brad
@brad לפחות הם אומרים לך. אני בטוח שאם הייתי נותן שירות אבטחה whitehat כי הציע את השירות הזה אני יכול לשמור יומן (אם רק מונה ללא פרטים בודדים) של כמה אנשים נכנסו בעיוורון באתר שלהם פרטים לתוך אתר אינטרנט אמר שזה הולך כדי לנסות מבחן חדירה, בלי לדעת הרבה על האותנטיות של האתר המציע את הבדיקה ... והם ירצו יומן של מי בדק מה אם מישהו השתמש בשירות שלהם כדי למצוא אתרים פגיעים השייכים לאחרים, גם ... - Rob Moir


type env x = '(({:;}; הד eash "bash-c" הד זה מבחן "ואם זה חוזר פגיע וזה מבחן זה אומר כי מכונת OSX / Linux שלך מושפע. התרופה היא לעדכן את הגירסה העדכנית ביותר של bash.


-1
2017-09-27 11:33



למה שורש? לגמרי מיותר. - Mat