בדיקה עבור פגיעויות הזרקת SQL

התקפות SQL Injection מציבות סיכונים עצומים ליישומי אינטרנט התלויים במאגר נתונים כדי ליצור תוכן דינמי. בסוג זה של התקפה, האקרים לתפעל יישום אינטרנט בניסיון להזריק פקודות SQL שלהם לאלה שהונפקו על ידי מסד הנתונים. לדוגמה, עיין במאמר הזרקת SQL התקפות על מאגרי מידע. במאמר זה, אנו נסתכל בכמה דרכים אתה יכול לבדוק את יישומי האינטרנט שלך כדי לקבוע אם הם פגיעים להתקפות SQL Injection.

הזרקת SQL אוטומטי הזרקת

אפשרות אחת היא באמצעות סורק פגיעות אוטומטית של יישומי אינטרנט, כגון WebInspect של HP, AppleScan של IBM או Cailic's Hailstorm. כלים אלה מציעים דרכים אוטומטיות וקלות לניתוח יישומי האינטרנט שלך עבור פגיעות פוטנציאלית של SQL Injection. עם זאת, הם די יקר, פועל עד $ 25,000 לכל מושב.

ידנית הזרקת SQL בדיקות

מהו מפתח יישומים גרוע לעשות? אתה יכול למעשה לרוץ כמה בדיקות בסיסיות כדי להעריך את יישומי האינטרנט שלך עבור פגיעות של הזרקת SQL באמצעות לא יותר מאשר דפדפן אינטרנט. ראשית, מילה של זהירות: הבדיקות אני מתאר רק לחפש בסיסי SQL הזרקת פגמים. הם לא יזהו טכניקות מתקדמות והם קצת מייגע להשתמש. אם אתה יכול להרשות לעצמך את זה, ללכת עם סורק אוטומטי. עם זאת, אם אתה לא יכול להתמודד עם תג המחיר, בדיקה ידנית היא צעד ראשון גדול.

הדרך הקלה ביותר להעריך אם יישום פגיע היא להתנסות עם התקפות הזרקת מזיקים כי לא ממש לפגוע באתר שלך אם הם יצליחו אבל יספק לך ראיות שאתה צריך לתקן בעיה. לדוגמה, נניח שיש לך יישום אינטרנט פשוט זה נראה אדם במסד הנתונים ומספק מידע ליצירת קשר כתוצאה מכך. דף זה עשוי להשתמש בפורמט כתובת האתר הבא:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

אנו מניחים כי דף זה מבצע בדיקת מסד נתונים, תוך שימוש בשאילתה הדומה לאלו:

בחר טלפון FROM WHERE שם Lastname = 'chapple' ו- firstname = 'mike'

בואו ניסוי עם זה קצת. עם ההנחה שלנו לעיל, אנחנו יכולים לעשות שינוי פשוט לכתובת URL זה בדיקות עבור התקפות הזרקת SQL:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1

אם יישום האינטרנט לא היה מוגן כראוי מפני הזרקת SQL, זה פשוט plugs זה שם פרטי מזויף לתוך משפט SQL שהיא מבצעת נגד מסד הנתונים, וכתוצאה מכך:

בחר את הספרייה מהספריה, כאשר Lastname = 'chapple' ו- firstname = 'mike' ו- (בחר count (*) מזויף)> 0 או '1' = '1'

תוכל לראות שהתחביר שלמעלה שונה מעט מזה שבכתובת האתר המקורית. לקחתי את החירות של המרת משתנה קידוד URL עבור המקבילה שלהם ASCII כדי להקל על הדוגמה. לדוגמה,% 3d הוא קידוד כתובת האתר עבור התו '='. הוספתי גם כמה מעברי שורה למטרות דומות.

הערכת התוצאות

הבדיקה מגיעה כאשר אתה מנסה לטעון את דף האינטרנט עם כתובת האתר המפורטת לעיל. אם יישום האינטרנט הוא התנהג טוב, זה יהיה להתפשט את הציטוטים יחיד מהקלט לפני העברת השאילתה למסד הנתונים. זה פשוט לגרום בדיקה מוזרה עבור מישהו עם שם פרטי הכולל חבורה של SQL! תראה הודעת שגיאה מהיישום הדומה לזו שבהמשך:

שגיאה: לא נמצא משתמש עם שם mike + ו- + (בחר + ספירה (*) + מ + מזויף) +% 3e0 + OR + 1% 3D1 Chapple!

מצד שני, אם היישום הוא פגיע הזרקת SQL, זה יעבור את ההצהרה ישירות למסד הנתונים, וכתוצאה מכך אחת משתי אפשרויות. ראשית, אם לשרת שלך יש הודעות שגיאה מפורטות מופעלות (שלא כדאי לך!), תראה משהו כזה:

Microsoft OLE DB ספק עבור מנהלי התקן של ODBC שגיאה '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] שם אובייקט לא חוקי 'מזויף'. /directory.asp, שורה 13

מצד שני, אם שרת האינטרנט שלך אינו מציג הודעות שגיאה מפורטות, תקבל שגיאה כללית יותר, כגון:

שגיאת שרת פנימית השרת נתקל בשגיאה פנימית או בתצורה שגויה ולא הצליח להשלים את בקשתך. פנה למנהל השרת כדי להודיע ​​על הזמן שבו אירעה השגיאה ועל כל דבר שעלול היה לגרום לשגיאה. מידע נוסף אודות שגיאה זו עשוי להיות זמין ביומן שגיאות השרת.

אם אתה מקבל את אחת משתי השגיאות לעיל, היישום שלך חשוף להתקפת הזרקת SQL! כמה צעדים שתוכל לנקוט כדי להגן על היישומים שלך מפני התקפות SQL Injection כוללות: