דף הבית » איך ל » כיצד האקרים להשתלט על אתרי אינטרנט עם הזרקת SQL ו - DDoS

    כיצד האקרים להשתלט על אתרי אינטרנט עם הזרקת SQL ו - DDoS

    גם אם יש לך רק בעקבות משוחרר האירועים של קבוצות האקרים אנונימי ו LulzSec, אתה בטח שמעו על אתרי אינטרנט ושירותים להיות פרוצים, כמו פריצות Sony הידועים לשמצה. האם תהית אי פעם איך הם עושים את זה?

    ישנם מספר כלים וטכניקות המשמשים את הקבוצות האלה, ובעוד אנחנו לא מנסים לתת לך מדריך לעשות זאת בעצמך, כדאי להבין מה קורה. שני ההתקפות שאתה שומע בעקביות על השימוש בהם הן "(Distributed) הכחשת שירות" (DDoS) ו- "SQL Injections" (SQLI). הנה איך הם עובדים.

    תמונה על ידי xkcd

    מניעת שירות

    מה זה?

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

    איך זה עובד?

    לוגיסטיקה של התקפת DDoS עשוי להיות מוסבר בצורה הטובה ביותר על ידי דוגמה.

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

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

    ביצוע הפיגוע

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

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

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

    התקפה הזרקת SQL

    מה זה?

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

    ביצוע הפיגוע

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

    בחר UserID ממשתמשים כאשר UserName = "myuser" ו- Password = "mypass";

    הערה: ערכי מחרוזת בשאילתת SQL חייבים להיות סגורים במרכאות בודדות ולכן הם מופיעים סביב ערכי המשתמש שהוזנו.

    לכן השילוב של שם המשתמש שהוזנו (myuser) והסיסמה (mypass) חייב להתאים לערך בטבלת המשתמשים כדי להחזיר UserID. אם אין התאמה, לא יוחזר UserID כך שאישורי הכניסה אינם חוקיים. בעוד יישום מסוים עשוי להיות שונה, המכניקה הם די סטנדרטיים.

    אז עכשיו בואו נסתכל על שאילתת אימות תבנית אשר אנו יכולים להחליף את הערכים שהמשתמש מזין בטופס האינטרנט:

    בחר UserID ממשתמשים איפה UserName = "[משתמש]" ו- Password = "[pass]"

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

    לדוגמה, נניח "myuser'-" מוזן בשדה שם המשתמש ו "wrongpass" הוא הזין את הסיסמה. באמצעות החלפה פשוטה בשאילתת התבנית שלנו, נקבל זאת:

    בחר UserID ממשתמשים איפה UserName = "myuser" - "ו- Password =" wrongpass "

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

    בחר UserID ממשתמשים כאשר UserName = "myuser"

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

    איזה נזק ניתן לעשות?

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

    בהתבסס על הדוגמה שלעיל, תוכל לראות זאת על ידי הזנה, לדוגמה, "youruser" - ", admin" - " או כל שם משתמש אחר, אנחנו יכולים מיד להיכנס לאתר כמו משתמש זה מבלי לדעת את הסיסמה. ברגע שאנחנו במערכת לא יודע שאנחנו לא ממש משתמש כי אז יש לנו גישה מלאה לחשבון בהתאמה. הרשאות מסד נתונים לא יספקו רשת ביטחון עבור זה, כי בדרך כלל, אתר אינטרנט חייב להיות לפחות קריאה / כתיבה גישה למסד הנתונים שלו בהתאמה.

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

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

    בחר UserID ממשתמשים איפה UserName = "Robert"; DROP משתמשים לוח; - 'ו סיסמה = "wrongpass"

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

    אשר מקבל להורג על ידי מסד הנתונים כמו:

    בחר UserID ממשתמשים איפה UserName = "Robert"

    DROP משתמשים לוח

    אז בדיוק ככה, השתמשנו התקפת SQLI למחוק את השולחן כולו משתמשים.

    כמובן, הרבה יותר גרוע יכול להיעשות כמו, בהתאם הרשאות SQL מותר, התוקף יכול לשנות את הערכים, שולחנות dump (או את כל מסד הנתונים עצמו) לקובץ טקסט, ליצור חשבונות כניסה חדשים או אפילו לחטוף את ההתקנה של מסד הנתונים כולו.

    מניעת התקף הזרקת SQL

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

    התקפת SQLI הוא סיכל בקלות על ידי מה שנקרא sanitizing (או לברוח) קלט שלך. תהליך לטהר הוא למעשה טריוויאלי למדי כמו כל מה שהוא בעצם עושה הוא להתמודד עם כל ציטוט יחיד inline (') תווים כראוי כך שהם לא יכולים לשמש בטרם עת לסיים מחרוזת בתוך משפט SQL.

    לדוגמה, אם אתה רוצה לחפש "O'neil" במסד נתונים, אתה לא יכול להשתמש תחליף פשוט כי ציטוט יחיד לאחר O יגרום מחרוזת בטרם עת. במקום זה אתה מחטאת אותו באמצעות אופי הבריחה של מסד הנתונים בהתאמה. נניח כי תו הבריחה של ציטוט בודד מוטבע הוא הקדמת כל ציטוט עם \ סמל. אז "O'neal" יהיה מחוטא כמו "O \" ניל ".

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

    postetary-- / העיסויYou

    בחר UserID ממשתמשים כאשר UserName = "myuser \" - "ו- Password =" wrongpass "

    בגלל ציטוט יחיד לאחר Myuser נמלט (כלומר, זה נחשב חלק ערך היעד), מסד הנתונים יהיה ממש לחפש את שם המשתמש של "myuser" - ". בנוסף, מכיוון שהמקפים נכללים בערך המחרוזת ולא בהצהרת SQL עצמה, הם ייחשבו כחלק מערך היעד במקום להתפרש כהערה של SQL.

    רוברט; DROP משתמשים לוח;-- / העיסויYou

    בחר UserID ממשתמשים איפה UserName = "Robert \"; DROP משתמשים לוח; - 'ו סיסמה = "wrongpass"

    פשוט על ידי בריחה ציטוט יחיד אחרי רוברט, הן נקודה פסיק ו מקפים הכלולים מחרוזת החיפוש UserName כך מסד הנתונים יהיה ממש לחפש "רוברט"; DROP משתמשים לוח; - " במקום לבצע את מחיקת הטבלה.

    לסיכום

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

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