התקפות הזרקה הן אחת הדרכים הנפוצות ביותר שבהן האקרים תוקפים מערכות מכיוון שהיא מאפשרת להם להריץ בקלות פקודות וקודים רבים. הזרקת פקודת מערכת ההפעלה היא מתקפת הזרקה כזו שאתה צריך להיות מודע אליה. זה מנצל פגיעות שמנהלי מערכת, מסד נתונים ויישומי אינטרנט צריכים לקחת ברצינות רבה.
אז מהי התקפת הזרקת פקודות מערכת הפעלה?
הגדרה של הזרקת פקודת מערכת ההפעלה
הזרקת פקודות מערכת ההפעלה מאפשרת לתוקף זדוני להריץ כל פקודה שהוא רוצה על ידי ניצול מערכת הפעלה, תוכנית, יישום, מסד נתונים או פלאגין פגיעים. זה קורה כאשר יישומים לא מצליחים לאמת ולחטא כראוי את הפרמטרים שבהם הם משתמשים בעת קריאה לפונקציות מעטפת כגון מערכת() אוֹ exec() לביצוע פקודות מערכת.
כדי להבין טוב יותר את הזיהוי והניצול של הזרקת פקודות מערכת ההפעלה, כדאי לבחון בעיה זו בשלוש קטגוריות עיקריות.
1. הזרקת פקודה ישירה
שקול זאת מנקודת המבט של התוקף. תוקף הסייבר מגלה שאפליקציה מפעילה פקודת מערכת מסוימת; הם נכנסים לפקודה הזדונית כחלק מהטיעונים הצפויים. לאחר מכן היישום מבצע את הפקודה המקורית ואחריה את הפקודה הזדונית.
התוקף משתמש במגוון גישות כדי למצוא פגיעות כזו. השיטה הקלה ביותר להילחם בכך היא לשמור על מערכת ההפעלה מעודכנת בכל עת; אתה יכול לעשות זאת בשיתוף פעולה עם צוות IT מוכשר. עליך להימנע מכל האפליקציות והתוכניות שעלולות לגרום לפגיעות מערכת מכיוון שהתוקף עלול להכניס ישירות קוד, והנזק אינו צפוי.
2. הזרקת פקודה עקיפה
במקרה של הזרקת פקודה עקיפה, התוקף אינו מזין ישירות קוד או פקודה למערכת. לשם כך, הם משתמשים ביישום או תוכנית פגיעים במערכת. הפגיעות יוצרת גשר בין התוקף למערכת ההפעלה. תוך ניצול התקשורת הזו, התוקף שואף להריץ קודים ופקודות זדוניים על המטרה.
התוקף מבצע סדרה של בדיקות כדי לזהות את הפגיעות הזו ומגלה שהתוכנה משתמש בנתונים ממקור חיצוני, כגון קובץ או משתנה סביבה, כדי לקרוא לפקודת מערכת. לאחר מכן התוקף משנה את התוכן של המקור החיצוני, כך שהוא מכיל כעת פקודה זדונית. לאחר מכן זה מבוצע לצד הוראות היישום המקורי.
ההבדל העיקרי בין הזרקת פקודה ישירה לעקיפה הוא שהתוקף משתמש באפליקציה כדי לתקשר עם מערכת ההפעלה. אבל אין הבדל אמיתי בין הנזק ששתי צורות ההזרקה יכולות לעשות, אז צריך לטפל בשתיהן. לכן כדאי לוודא שהתוכנות ברשת שלכם אמינות והכרחיות. אל תשאיר אפליקציות שאינך סומך עליהן במכשיר שלך.
3. הזרקת פקודה עיוורת
סוג אחר של הזרקת פקודות מערכת ההפעלה היא הזרקת פקודה עיוורת. המשמעות היא שהאפליקציה לא מחזירה שום פלט מהפקודה בתגובת HTTP. התוקף משתמש בטכניקות שונות כגון עיכוב זמן וניתוב פלט כדי לנצל את הפגיעות הזו.
תאר לעצמך שאתה מחפש אתר, והערך "/?search=id" בכתובת האתר משתנה עם כל חיפוש. ערך המזהה כאן יכול להיות דף משתמש, כתובת של תמונת מוצר או כל עמוד באתר. התוקף יכול לקבל תוצאות שונות על ידי שינוי ערך המזהה. קשה לעשות את זה ידנית, אבל יש כלים כמו Burp Suite לזה. מאוחר יותר, התוקף מגלה מוזרות בדף: ייתכן שיוחזר ערך מזהה שלמרות שהוא לא הראה תוצאות, תגובת האתר הייתה 200, מה שמעיד שהכל בסדר. במקרה כזה, התוקף יכול להשתמש בזריקת פקודה עיוורת.
טכניקה כמו עיכוב זמן שימושית במיוחד. מכיוון שהדף שייפתח יהיה ריק, לא תקבל שום תגובה, אבל אולי עדיין תוכל לאסוף מידע על מה שמאוחסן במסד נתונים על סמך עיכובי זמן הטוענים את הדף רק אם תו מסוים הוא מתנה. זה גוזל זמן רב מכדי להיות תהליך ידני, אבל הרבה כלים יכולים להפוך את ההתקפה לאוטומטית.
תרחיש תקיפה לדוגמה
הבה נסקור את כל האמור לעיל באמצעות דוגמה. תאר לעצמך שיש לך אפליקציית קניות המאפשרת למשתמש לראות אם המוצרים במלאי. בואו נשתמש בכתובת URL כמו זו למטה כדי לגשת לכל המידע הזה:
example_unsafe_store.com/stockStatus? productID=245&storeID=
תאר לעצמך להעביר את מזהי המוצר והחנות כארגומנטים לפקודת מעטפת, כגון "stockstat.pl 245 38", מכיוון שהאפליקציה תצטרך לחפש רשומות ישנות. אם המפתח לא נוקט בפעולה נגד הזרקות פקודות, תוקף יכול לשלוח קלט לביצוע הפקודה הרצויה:
& הֵד זו_פקודה_מזיקה &
אם ערך זה נכנס לפרמטר productID, הפקודה שתבוצע על ידי האפליקציה תהיה:
stockstat.pl & הֵד זו_פקודה_מזיקה & 38
הפקודה echo היא שיטה שימושית לזיהוי הזרקות פקודות וכן לוודא שהמחרוזת הנתונה מופיעה בפלט. התו "&" הוא א מפריד פקודות מעטפת, אז מה שמבוצע הוא שלוש פקודות נפרדות, אחת אחרי השנייה. כתוצאה מכך, הפלט שיוחזר למשתמש יהיה:
שְׁגִיאָה -מזהה המוצר לא נמצא
זו_פקודה_מזיקה
38: פקודה לא נמצא
כאן, הקובץ "stockstat.pl" ביצע את הפקודה ללא הארגומנטים שהוא ציפה ולכן החזיר הודעת שגיאה. לאחר מכן, פקודת ההד שהזריק התוקף רצה והתוקף ראה את ההבעה שהזין על המסך. הארגומנט המקורי, "38", רץ כפקודה שגורמת שגיאות.
כיצד להתגונן מפני הזרקות פקודות מערכת ההפעלה
למרות שהזרקת פקודה היא וקטור התקפה רב עוצמה ומזיק, ישנם כמה טריקים כדי להימנע מכך. ההיגיון מאחורי התקפות הזרקת פקודות מערכת ההפעלה הוא ביצוע פקודות מסוימות של מערכת ההפעלה באמצעות יישום. אתה צריך לעצור את זה מלהתרחש. יש כמה נושאים שיש לקחת בחשבון:
- עליך למנוע מכל מי שיש לו גישה לאפליקציה להיות מסוגל להריץ קוד.
- עליך למנוע מכל מי שיש לו גישה לאפליקציה לשלוח בקשות לשרת עם ביטויים תחביריים.
- עליך להצפין את הביטויים שכל מי שיש לו גישה מבקש בקשות.
בואו נעבור על כל פריט אחד אחד. פתרון טוב לבעיה הראשונה הוא השתמש בשיטת הרשימה הלבנה כדי למנוע מכל אדם להגיע לשכבת האפליקציה להפעיל קודים או בקשות מסוימות. כל מי שלא תזהה לא יוכל להריץ קוד.
הפתרון לשני הוא לא לקבל כמה ביטויי טקסט המשמשים בפקודות. המשתמש יכול להזין רק ערכים מספריים. החל את זה יחד עם שיטת הרשימה הלבנה, ותהיה לך מערכת הרבה יותר מאובטחת.
הפריט השלישי עוסק בהצפנה של פרמטרים תחביריים כמו התו שהוזן ורווחים. כתוצאה מכך, שיטת הרשימה הלבנה, בדיקה תחבירית של כניסות והצפנה של קלט אמורות להגן עליך מפני הזרקת פקודות מערכת ההפעלה.
התקפות הזרקה מתפתחות כל יום
ישנן שיטות הזרקה רבות עם טכניקות התקפה שונות, כגון פקודת מערכת ההפעלה, SQL, SSI ו-XPath. זה לא קל לנסות למנוע כל אחד מהם. זכור שכל ההתקפות הללו מתפתחות מדי יום ומנצלות נקודות תורפה קטנות שהמפתחים התעלמו מהן. לכן חשוב תמיד להישאר מעודכן ולעקוב מקרוב אחר ההתפתחויות הנוכחיות בעולם אבטחת הסייבר.