לא יוצא לי לכתוב המון על וורדפרס, מערכת ניהול תוכן שאני מחבב למרות שהיא יכולה להיות לפעמים… מאתגרת. עדיין היא הפתרון הכי טוב לאתרי תוכן קטנים כמו האתר הזה. למרות זאת, יש לא מעט טוויקים ומשחקים של אבטחת מידע עם וורדפרס ודברים שיכולים להוות סיכון. גם באתר קטן יחסית שבו אין מידע של גולשים בכלל (אני לא שומר אפילו לוג).
אני שמח לדווח על חור אבטחה נוסף שהתגלה באתר הזה. הודות לאמצעי הגנה משוכלל מאד שלצערי אני לא רואה מספיק באתרים. מהו? קישור בתחתית האתר שבו אני מזמין גולשים לדווח לי על בעיות אבטחה שהם מגלים באתר. ואכן, חוקרי אבטחה ומתכנתים מן השורה יוצרים איתי קשר כדי לדווח על כל מיני בושות אבטחה קטנות וגדולות ואני שמח על כל פניה.
היום זה תורו של דניאל ביטון, מקצוען וג׳נטלמן ששלח לי מייל: ״הי רן! ה-xmlrpc שלך פתוח!״. זה כל מה שהייתי צריך. איזה בושות. הייתי בטוח שסגרתי את זה אבל אולי היתה איזו בעיה ב htaccess או איזה rule אחר והוא היה פתוח. מדובר בחולשת אבטחה מוכרת המאפשרת להפיל אתר וורדפרס יחסית בקלות ולצערי איכשהו וורדפרס משאירים את זה פתוח כברירת מחדל.
אז מה זה אומר? מדובר בדרך לשלוח מידע לוורדפרס (פוסטים למשל) שלא דרך הממשק. זה שימושי אבל רוב האתרים, גם אני, לא משתמשים בזה. איך אפשר לנצל את זה לתקיפה? אפשר לשלוח בקשות מרובות ל-API הזה או לבצע בדיקה מה ה-IP האמיתי של השרת מאחורי קלאודפלייר, אפשר גם לנסות מתקפות brute force ובאמת מדובר במקום שיותר טוב שהוא לא יהיה פתוח.
יש לכם וורדפרס? פיתחו דפדפן והכניסו xmlprc.php מייד אחרי הכתובת של האתר. רואים את התגובה ״XML-RPC server accepts POST requests only״? החולשה הזו קיימת אצלכם וכדאי לחסום.
איך חוסמים? או עם תוסף אבטחה או דרך קלאודפלייר. בגדול ב-htaccess זה נראה כך:
<files xmlrpc.php>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</files>
אם אתם צריכים את הפונקציונליות הזו, הדרך הכי טובה היא פשוט בקלאודפלייר או בכל WAF אחר לאפשר את הגישה רק ל-IP מסוים שהוא ה-IP שלכם.
אז תיקנתי והודיתי לדניאל ביטון וכרגיל עם כל חולשת אבטחה שמגלים אצליח – אני מפרסם אותה. גם מתוך כבוד ותודה למי שמצא וגם שזו הזדמנות טובה להראות שפרצות וחולשות יש בכל מערכת – גם כזו שאני אחראי עליה. ההבדל המרכזי הוא תמיד בהתייחסות לאנשים שבאים ומדווחים. אז שוב תודה דניאל!
7 תגובות
FUD much? לא שיש סיבה להשאיר אותו "פתוח" אבל הסכנה לא גדולה בהרבה מלהשאיר את דף הלוגין פתוח או שאתה חוסם גם אותו?
יש הרבה סכנות כמובן וכתבתי עליהן לא מעט – אבל פה ספציפית אני כותב על משהו שמצאו אצלי והיה יכול לעשות לי צרות.
דף לוגין פתוח להכל הוא גם בעיה (פה אני סוג של מחביא אותו וגם חוסם כניסה אליו ממקומות שהם לא מישראל וזה מספיק).
הבעיה העיקרית היתה שהפרוטוקול יכל לבצע מספר נסיונות לוגין בהודעה אחת. זה נפתר בוורדפרס לפני מליון שנה על ידי הגבלה של נסיון אחד בכל הודעה. מאותו רגע אין יותר שום סיכון שאינו קיים בטופס הלוגין.
XMLRPC צריך לסגור כמו שצריך לסגור כל ממשק חיצוני שלא משתמשים בו, אבל ספציפית הוא לא בעיה בפני עצמו
יש טעות בשם הלינק
xmlprc.php צריך להיות xmlrpc
לא הבנתי למה מדוע בפרצה באתר? אפשר להפיל את האתר בשליחת בקשות מרובות לכל דף באתר ולא דווקא הדף הזה
האתר הזה מגביל אותך בכמות הבקשות באופן כללי, אם תגיש הרבה בקשות לכל דף באתר תחסם לזמן מסוים.
במקום לחסום בשרת (או בפרוקסי) עדיף להתקין תוסף שמאפשר חסימה יותר ספציפית ע"י ביטול תכונות מסויימות (או הכל), דרישת סיסמה, ניהול רשימות IP באופן מובנה באתר וכו'
יש כמה תוספים רלוונטים, אני ממליץ על
disable-xml-rpc-api