שרתי אינטרנט מארחים את הקבצים (דפי אינטרנט, תמונות, סרטונים, טפסים וכו') המרכיבים את יישום האינטרנט שלך ומגישים קבצים אלה כאשר מישהו מבקר באתר האינטרנט שלך. חלק מהשרתים מתקדמים יותר וגם שולטים בכמה גישה יש למבקרים באינטרנט. הם עשויים להגביל מבקרים קבועים את הגישה לחשבונות של משתמשים אחרים או למרכזי מחוונים ניהוליים. למרות ששרתי אינטרנט יעילים במה שהם עושים - והם עושים זאת בצורה מאובטחת למדי, תוקפים יכולים לנצל שגיאות הנובעות מטעות אנוש או לוגיקה פגומה באופן שבו שרת משרת את הקבצים שהוא מארח.
מהי התקפת LFI?
התקפה של חדירה לקבצים מקומיים (LFI) מתרחשת כאשר תוקפים מנצלים נקודות תורפה באופן שבו שרת אינטרנט מאחסן, משרת, מאמת או שולט בגישה לקבצים שלו. פגיעות זו משותפת לאתרים מבוססי PHP.
שלא כמו צורות רבות של התקפות סייבר שבהן תוקפים מסתמכים על תוכנות זדוניות כדי להשחית אפליקציה, התוקפים ב-LFI מסתמכים בעיקר על טריקים חכמים ושורות קוד קצרות. לעתים רחוקות זה דורש כלים מתוחכמים או סקריפטים מורכבים; התקפות מתרחשות בדרך כלל בדפדפן האינטרנט. הטריק הנפוץ ביותר שתוקפים משתמשים בהם הוא שינוי מחרוזת ה-URL עם קוד, נתיבי קבצים או שמות קבצים.
כיצד מתרחשות התקפות LFI?
התקפות LFI מתרחשות בדרך כלל בארבעה שלבים.
ראשית, התוקף מזהה אתר PHP המריץ יישום אינטרנט פגיע, בדרך כלל על ידי הפעלת קוד בסיסי בכתובת האתר של הדפדפן כדי לראות אם יישום האינטרנט (כלומר האתר) מטפל בפקודה. תחשוב על זה כלחיצה על שילובי מקשים בבקר המשחק שלך כדי לפתוח ביצת פסחא - נניח, למשל, לחיצה על מקש למטה כדי להיכנס למנהרות בסופר מריו. אבל הפקודות שתוקפים מריצים בהתקפות LFI עקביות יותר מאשר בדיקת כל מנהרה בסופר מריו.
יישום אינטרנט או שרת שהוגדר בצורה לא נכונה או לא מצליח לאמת קלט יבצע את הקוד הזדוני. מכאן, ההאקר עשוי לקבל את הגישה וההרשאות הדרושים להם כדי לקרוא קבצים פגיעים או להעלות קבצים זדוניים לשרת.
רוב התקפות ה-LFI מביאות לכך שהתוקף ניגש למידע רגיש. האפשרות להעלות תוכנה זדונית מצליחה לעתים רחוקות מכיוון שאין ערובה לכך שיישום האינטרנט ישמור את הקובץ באותו שרת שבו קיימת פגיעות LFI. זה קורה לעתים קרובות אם יישום האינטרנט נמצא בסביבה מרובת שרתים.
לכן, אם פגיעות LFI קיימת בשרת המארח תמונות אך לא בשרת המאחסן את העובד אישורים או סיסמאות משתמש, לתוקף תהיה גישה רק לקבצי תמונה באותו שרת פגיע. בלי קשר, אירועי סייבר כמו ההתקפה על LastPass להראות שהאקרים יכולים לזרוע הרס עם רמת הגישה הכי לא משמעותית לכאורה.
כיצד למנוע התקפות LFI
התקפות LFI נפוצות למדי, על פי פתח את פרוייקט אבטחת יישומי אינטרנט (OWASP). מובן, האקרים היו מעדיפים את ההתקפה הזו שכן, כמו W3Techs מדווח, כמעט שמונה מתוך 10 אתרי אינטרנט מריצים PHP כשפת תכנות בצד השרת - שפע של קורבנות, כביכול. אפשר למנוע התקפת LFI על ידי אימוץ שיטות עבודה מומלצות לאבטחת אינטרנט.
רשימת היתרים של קבצי שרת ציבורי
יישומי אינטרנט משתמשים לעתים קרובות בנתיבי קבצים כקלט כתובת URL. האקרים יכולים לנצל את מערכת התיוק הזו על ידי שינוי החלק של כתובת ה-URL שמשמש כנתיב לקובץ. לדוגמה, תוקף יכול להשתנות https://dummywebsite.com/?module=contact.php ל https://dummywebsite.com/?module=/etc/passwd. שרת פגיע עם סינון לקוי והיגיון לקוי יציג את תוכן הקובץ המאוחסן בנתיב /etc/passwd.
כמובן, האקרים משתמשים בווריאציות של שמות קבצים נפוצים ושילובים של תווי שאילתה כדי להגדיל את הסיכויים להתקפה מוצלחת. המטרה היא להערים על אפליקציית האינטרנט להריץ סקריפט או להציג את הקבצים בשרת אינטרנט.
אתה יכול לחסום את הפגיעות הזו על ידי יצירת רשימת היתרים של מסמכים ציבוריים בשרת שלך והנחיה ליישום האינטרנט להתעלם משאילתות עבור כל מסמך או נתיב קובץ אחר. לכן, אם תוקף ינסה לתמרן את כתובת האתר כדי לבקש או להפעיל קודים המבקשים קוד פרטי, הוא יקבל במקום זאת דף שגיאה.
בדיקת פגיעויות לעתים קרובות
אתה יכול להשתמש כלי סריקה באינטרנט כדי למצוא ולתקן נקודות תורפה שעלולות לחשוף אותך להתקפות LFI. סורקי אפליקציות אינטרנט הם כלים אוטומטיים שסורקים את האפליקציה שלך כמו תוקף ומתריעים על נקודות תורפה אפשריות. ישנם מספר סורקי אינטרנט בקוד פתוח כמו OpenVAS ו-Wireshark, אך רוב סורקי הפגיעות הם תוכנה קניינית ודורשים תוכניות בתשלום לשימוש.
אבל, כמובן, אתה לא מקבל סורק אינטרנט רק עבור התקפות LFI. כלים אלה מחפשים גם פרצות אבטחה רחבות יותר כמו הכללת קבצים מרחוק, סקריפטים בין אתרים, הזרקת SQL ותצורות שרת גרועות. אז, הם שווים את זה.
הגבל את הרשאות המבקרים באתר
האקרים מבצעים לעתים קרובות התקפות LFI בהצלחה מכיוון שיישומי אינטרנט אינם מצליחים למדר את הרשאות המשתמש, ובכך מאפשרים למבקרים לגשת לקבצים שאמורים להיות גלויים רק למנהלים. אמצעי זה פועל כמו רשימת היתרים: הגדר את אפליקציית האינטרנט והשרת שלך כך שישרתו קבצים ציבוריים ויתעלמו מבקשות לא מורשות כאשר מבקר מקיים אינטראקציה עם אפליקציית האינטרנט. זה חשוב במיוחד עבור שאילתות לנתיבי קבצים המכילים קבצים רגישים.
לשם כך, ייתכן שיהיה עליך למנוע שינוי ישיר של נתיבים לקבצים. אפליקציית האינטרנט צריכה להגיש רק מסמכים מרשימת נתיבים מקודדים. יתר על כן, הגדר את אפליקציית האינטרנט לעבד בקשות עם שרשור נתיב דינמי (כתובות האתר צריכות להכיל תווים אלפאנומריים) במקום פונקציות base64 או bin2hex.
אם אתה חושב להעלות שמות קבצים ברשימה שחורה, אל תעשה זאת. להאקרים יש בדרך כלל רשימה הולכת וגדלה של שמות קבצים שהם יכולים להשתמש בהם כדי לבצע התקפת LFI. חוץ מזה, זה כמעט בלתי אפשרי (ובזבוז עצום של זמן) לרשימה שחורה של מקורות הגדלים כל הזמן של התקפה.
השתמש בסביבה מרובת שרתים
סביבה מרובת שרתים מאפשרת לך לבודד מסמכים חשובים ורגישים מקבצים ציבוריים, ובכך להפחית את הסיכון שלך במקרה של פריצה. שרתים ייעודיים פגיעים פחות להתקפות LFI מכיוון שלמרות שהם עובדים יחד, התצורות שלהם שונות.
מלבד אבטחה זו, שרתים מרובים הם גם אמינים (עם סיכונים נמוכים יותר של השבתה), מהירים ויעילים. יש להודות, שימוש בסביבה מרובת שרתים אינו משתלם אם האתר שלכם קטן. במקרה זה, שקול לפצל את הגישה של יישום האינטרנט שלך לנתונים בין מסד נתונים עבור נתונים פרטיים ושרת עבור קבצים ציבוריים.
האם אתה צריך לדאוג מהתקפות LFI?
האפשרות של מתקפת LFI קיימת, במיוחד אם האתר שלך פועל על PHP, אבל אתה יכול להפחית את החשיפה שלך על ידי הגדרת יישומי אינטרנט ושרתים לפי שיטות עבודה מומלצות לאבטחת אינטרנט.
יתר על כן, כדאי לשקול לבצע בדיקות אבטחה שגרתיות כדי למצוא נקודות תורפה. דברים נשברים כל הזמן, במיוחד כשארכיטקטורת האתר הופכת למורכבת. הכלים שאתה צריך כדי להגן על עצמך הם אוטומטיים, ורבים מהם אינם דורשים הגדרה משוכללת או ידע טכני מתקדם.