ככה פרצו לאחד האתרים שלי

ככה פרצו לאחד האתרים שלי

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

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

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

היא: מה קרה לאתר שלי? פרצו אליו?
אני: אין מצב!
היא: עובדה שאני לא מצליחה להגיע אליו. ולפני חצי שעה הכל היה בסדר.
אני: באמאשל'ך? כבר בודק וחוזר אלייך.

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

בקיצור, הבנתי שזה אמיתי. קרה פה משהו.
ניסיתי להתחבר לפאנל הניהול – אי אפשר. שוב מועבר לאתרים אחרים. החלטתי שמיותר להמשיך לנסות, צריך להירגע ולחשוב.

איך מזהים פריצה?

טוב, כמו שאתם מבינים, את זה כבר זיהיתי. אבל מאיפה הם פרצו ומה בדיוק הם עשו? עדיין לא ידעתי.

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

אז כדי להבין איפה בדיוק חור האבטחה, דבר ראשון התחברתי לאתר דרך FTP ובדקתי את קבצי האתר. אוקיי, כל הקבצים שם. לפחות זה.
התחלתי לחפש קבצים ששונו באותו יום, בעיקר במקומות הבעייתיים כמו קובץ .htaccess, קבצי header.php, footer.php, functions.php וכדומה. כלום, אף אחד מהם לא שונה באותו יום. וגם כשנכנסתי לתוכם לא ראיתי משהו שאני לא מזהה.

אוקיי, אז זה לא בקבצים כנראה. שלב שני, לבדוק את ה-DB דרך phpMyAdmin. נכנסתי מיד לטבלת המשתמשים (users, אגב כל הטבלאות יובאו כאן ללא ה-prefix שלהם מסיבות אבטחה) בכדי לראות אם נוצר שם משתמש חדש. ומה רבה הייתה ההפתעה (או שלא) למצוא שם משתמש חדש שנוצר בדיוק בזמן שהערכתי שבו הפריצה קרתה. ניתן לראות שהמשתמש הזה משתמש במייל רוסי.

WordPress' users' table

אוקיי, אז יש לי את ה-ID של המשתמש החדש הזה (177 כפי שניתן לראות בטבלה). בשביל לראות אם הוא סתם משתמש או מנהל, הלכתי לבדוק את טבלת usermeta ושם בשדה wp_user_level הופיע המספר 10 שכל כך חששתי ממנו. מה שאומר שיש לו הרשאות מנהל. לעוד מידע על השדה הזה, תוכלו לקרוא בקודקס של וורדפרס.

טוב, אז יש למישהו הרשאות מנהל חוץ ממני (בדקתי שהמשתמש שלי עדיין קיים). החלטתי שאני לא רוצה למהר ולמחוק את המשתמש הזה, היות ורציתי לחקור את כל האירוע לאחר שאסיים אותו. אז פשוט שיניתי את השדה wp_user_level ל-0. אז אולי אין לשמוק הזה עכשיו גישה לאתר אבל האתר עצמו עדיין לא נגיש. במה הוא יכול היה לגעת בשביל שזה יקרה? נו ברור, בטבלת options. שם באמת מצאתי שהוא שינה את שדה siteurl לאתר אחר ולכן לא יכולתי להיכנס להאתר של אשתי. שיניתי את השדה ל-URL הנכון של האתר וזהו. האתר נגיש גם בפרונט וגם בפאנל הניהול.

טוב, אחלה. אז האתר נגיש לי. אבל למה אני לא מרגיש בטוח מספיק? ברור, מכיוון שעדיין לא מצאתי איך אותו האקר יצר לעצמו יוזר ושינה את פרטי האתר. אני חייב למצוא את זה. אחד הכלים שאני אוהב הוא התוסף Activity Log, שנותן לך כמנהל לראות מי עשה מה באתר. הנה תפיסת מסך:

Activity Log for hacked site

כמו שניתן לראות, מישהו דרך IP שכתובתו 185.212.131.46 פתח את האתר להרשמה, יצר את היוזר שלו, סגר שוב את האתר להרשמה ושינה את כתובת האתר (siteurl). טוב, אבל את כל זה אני כבר יודע. המממ… לא בדיוק. יש כאן פרט חדש שאוכל להשתמש בו – ה-IP של ההאקר. השלב הבא יהיה למצוא את ה-IP הזה בלוג של האתר ולראות מה בדיוק הוא עשה.

185.212.131.46 - - [19/Mar/2019:18:02:22 +0200] "POST /wp-admin/admin-ajax.php HTTP/1.1" 400 11 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"
185.212.131.46 - - [19/Mar/2019:18:02:30 +0200] "POST /wp-admin/admin-post.php HTTP/1.1" 302 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"
185.212.131.46 - - [19/Mar/2019:18:02:37 +0200] "GET /wp-admin/options-general.php?page=swpsmtp_settings HTTP/1.1" 302 0 "https://www.hilabooks.co.il/wp-admin/admin-post.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"
185.212.131.46 - - [19/Mar/2019:18:02:43 +0200] "GET /wp-login.php?redirect_to=https%3A%2F%2Fwww.hilabooks.co.il%2Fwp-admin%2Foptions-general.php%3Fpage%3Dswpsmtp_settings&reauth=1 HTTP/1.1" 200 2086 "https://www.hilabooks.co.il/wp-admin/options-general.php?page=swpsmtp_settings" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"
185.212.131.46 - - [19/Mar/2019:18:02:51 +0200] "POST /wp-login.php?action=register HTTP/1.1" 302 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"
185.212.131.46 - - [19/Mar/2019:18:02:59 +0200] "GET /wp-login.php?checkemail=registered HTTP/1.1" 200 2148 "https://www.hilabooks.co.il/wp-login.php?action=register" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"

בום! מצאתי מה הוא עשה. צבעתי באדום את החלק בלוג שמראה שהוא השתמש ב-swpstmp שזה בעצם שם הקוד של התוסף Easy WP SMTP שמשמש אותי לשליחת אימיילים מהאתר באמצעות SMTP של השרת שלי, זאת מכיוון שלא מעט חברות אחסון מונעות שליחת מיילים באמצעות וורדפרס ישירות. אבל לא בשביל זה אנחנו כאן.

חזרתי לאתר ובדקתי אם יש עדכונים לתוספים שמותקנים לי באתר. מסתבר שיש שלושה עדכונים, אחד מהם של התוסף דרכו בוצעה הפריצה. בדקתי ב-changelog של התוסף מה עודכן וזה מה שהיה כתוב שם:

Changelog

1.3.9.1

  • Fixed potential vulnerability in import\export settings.

טוב, הרבה מידע אין פה אבל השימוש במילה vulnerability מרמז שיש כאן כנראה בעיית אבטחה.
איך מוודאים? מחפשים בגוגל. הרי אם אני צודק, אני כנראה לא היחיד שנפרץ לו האתר באמצעות התוסף הזה. בדיקה קצרה בגוגל העלתה פוסט של NinTechNet על חור אבטחה בתוסף הזה בדיוק. זה המסמר האחרון שהייתי צריך בשביל לדעת שצדקתי ומצאתי את חור האבטחה דרכו ההאקר הזה פרץ לאתר של אשתי. הפוסט הזה בעצם אמר שב-17 למרץ 2019 הם מצאו חור אבטחה בתוסף הזה, הודיעו למפתחים ולאלו לקח יומיים להוציא עדכון לתוסף שלהם שסוגר את חור האבטחה הזה (הרבה יותר מדי זמן לדעתי).

אבל קריאת הפוסט של NinTechNet הבהירה לי שעדכון התוסף לא סגר את כל הפינות. עדיין הייתי צריך לשנות את הססמא של הגישה ל-SMTP, מחשש שההאקר הוריד את כל ההגדרות של התוסף, הכוללות את הססמא ל-SMTP והוא יוכל לעשות בו שימוש גם בלי לפרוץ לאתר של אשתי שוב.

ועוד דבר, אני איבדתי אמון לחלוטין בתוסף הזה ואני מתכוון להחליף אותו בתוסף אחר במהרה.

סיכום

אז מה למדנו מזה?

  1. לשמור גיבוי עדכני של האתר שלכם במקום בטוח, רצוי מחוץ לשרת עצמו (לימדו איך כאן).
  2. לעדכן תוספים ואת מערכת הליבה באופן שוטף (פוסט בנושא כאן).
  3. כדאי מאד להכיר את סט הכלים הנלווה לוורדפרס כמו PhpMyAdmin ואיפה נשמרים הלוגים של האתר שלכם.

למדתם עוד משהו מהמקרה הזה? חושבים שפספסתי משהו? שתפו אותי בתגובות!

דוד ארוון

מהנדס תעשיה וניהול בהשכלתי, בעולם המחשבים מאז מחשב ה-AT 286 ובעולם התקשורת כבעל BBS עוד לפני שנולדה רשת האינטרנט. את הדומיין הראשון שלי קניתי בשנת 2000 (עדיין קיים) ומתעסק בבניית אתרים מאז, כשבשנים האחרונות אני מתרכז בוורדפרס בלבד.

כתיבת תגובה

 

סגירת תפריט