אני מניח שרוב הקוראים כאן מעולם לא נתקלו בפונקציה הזו (ואם נתקלו, לרוב פנו לחברת האחסון לתיקון הבעיה).
מצד שני, מדובר בפונקציה מאוד משמעותית בעולם האחסון (או לפחות, בעולם אחסון ה-PHP-Linux).
Open_Basedir הינה פונקצית php הנשלטת בצד השרת (כלומר, לרוב לא מדובר בפונקציה שלמשתמש יש גישה אליה).
מהות הפונקציה היא חסימת הגישה של המשתמש לתיקיות נקודתיות בלבד- דבר שאומנם יכול להשמע לנו כמובן מאליו, אבל במערכת Linux, בהינתן הרשאות מסוייימות ובהנחה שאני יודע למפות את הקובץ אלינו אני מנסה להגיע, ייתכן ואני אצליח להגיע אליו גם אם הוא לא נמצא תחת התיקיות שמותר לי לגשת אליהן במסגרת ההרשאות הרגילות שלי.
על מנת להסביר את המצב למעלה, נדמה מצב:
בעל חשבון האחסון:
במצב "תקין", בעל החשבון שיכול לגשת באמצעות ה-FTP או ממשק הניהול, כאשר הוא ניגש ל-FTP (לדוגמא), הוא יכול לראות אך ורק את התיקיה שהוקצתה לו במסגרת חשבון האחסון – כלומר, הוא לא רואה חשבונות של משתמשים אחרים.
מצד שני, חשוב לזכור כי ישנן צורות רבות לגשת לקבצים שהן לא FTP או ממשק הניהול.
לדוגמא, פונקצית Include או Require של Php מאפשרות לגשת לקבצים מסויימים, כאשר אין "מערכת הגנה" כלשהי המפריעה לנו לגשת לקבצים של משתמשים אחרים (פרט למערכת ההרשאות של Linux, אך כפי שראינו במאמרים קודמים, לפעמים יש צורך במתן הרשאות מסויימות לאתר על מנת שיעבוד באופן תקין).
התוקף:
עד כאן הסיכון קיים אך עדין נמוך, מכיוון שבפועל – אין לתוקף אפשרות למפות את התיקיות של המשתמשים האחרים בשרת, אבל הוא כן יכול "לנחש" את המיקום, וכך (לדוגמא), יוכל לבצע Include (באמצעות פונקצית ה-php) לקובץ המכיל (שוב, רק לדוגמא) את סיסמאות הגישה למסד הנתונים (דוגמא קלאסית היא קובץ ה-wp-config.php של wordpress) – ואם התוקף הגיע לשם.. השמיים הם הגבול.
אז איך התוקף יכול "לנחש" משהו כזה?
פשוט למדי, רוב ספקי האחסון (בארץ ובעולם) עובדים עם מספר מאוד מצומצם של ממשקי ניהול מסחריים.
ממשקי הניהול, בין השאר, יוצרים את ה"היררכיה" של הקבצים והתיקיות בשרת.
כלומר, בסופו של דבר, משתמש X אומנם מארח אתר wordpress בשם hello.com ומשתמש Y מארח אתר wordpress בשם goodbye.com .. אבל 2 האתרים יושבים במיקומים דומים בשרת:
/home/<username>/public_html/
בדוגמא זו (האופיינית לשרתי Cpanel או DirectAdmin) כל מה שנשאר לפורץ "לנחש" הוא שם המשתמש.
גם זאת לא קשה במיוחד לבצע, היום רוב ספקי האחסון פותחים את שמות המשתמש באופן המקביל לדומיין, כלומר – אם ניקח את הדוגמא הקודמת (goodbye.com), לרוב שם המשתמש יהיה נגזרת של הדומיין (לדוגמא: goodbyecom).
כך שבסופו של דבר, אם התוקף יבצע Include לתיקית /home/goodbye/public_html ויתחיל לחפש שם קבצים.. הוא יצליח.
מדאיג נכון?
הפתרון הוא פשוט, בדקו מול חברת האחסון שלכם האם בשרת שלכם מופעלת אפשרות ה-Open_Basedir וכמו כן כיצד היא מוגדרת באופן מדוייק.למה? אם כל משתמש יכול לגשת לתיקית / (תיקית השורש בשרתי Linux, מקביל בעצם ל-c: ב-windows).. לא עשינו דבר.
מעבר לכך, מ"שמועות" המסתובבות בשוק האחסון, לא מעט מהפריצות המשמעותיות בשנים האחרונות בוצעו בגלל הגדרה שגויה (או חסרה) בהגדרת ה-open_basedir.
חשוב לזכור- הגנה על השרת היא הרבה מעבר להגדרת פונקצית Php כזו או אחרת,
הגנה על שרת אחסון מערבת בתוכה מאות פרמטרים שונים – ולכן, כל פרמטר חשוב.
מיותר לציין, שהפונקציה מופעלת ומוגדרת כהלכה בכלל שרתי האחסון של SPD Hosting.
- ריבוי אתרים בחשבון = סיכון אבטחה - יולי 16, 2017
- Let's encrypt – תעודות SSL, ובחינם! - ינואר 17, 2017
- PHPMailer Exploit - דצמבר 28, 2016
השאר תגובה