שלום לכולם וברוכים השבים למדריך!
בפרק הקודם מיפינו את בסיס הנתונים, גילינו את הטבלאות הקיימות ולמדנו כיצד להבין את מבנה הנתונים. כעת נשתמש במידע שאספנו כדי להתמקד בטבלה מסוימת ולבחון את המשמעות של חשיפת מידע רגיש.
מה אנחנו עושים בפרק הזה? (מטרת השיעור)
עד עכשיו עבדנו "על יבש" – בדקנו אם יש פגיעות, וקיבלנו את רשימת הטבלאות הכללית של מסד הנתונים. אבל בעולם האמיתי, הגנת האתר לא נמדדת רק ב"האם יש חור באבטחה", אלא באיזה מידע אפשר לגנוב דרך החור הזה.
במעבדת Mutillidae קיימת טבלת כרטיסי אשראי שנועדה לצורכי תרגול בלבד.
בפרק הנוכחי אנחנו הולכים לקבוע נקודת כניסה ממוקדת, לפנות ישירות לטבלה הרגישה ביותר במערכת – טבלת כרטיסי האשראי (credit_cards), ולבצע לה "דאמפ" (Dump). אנחנו נשלוף את מספרי הכרטיסים, התוקף וקודי ה-CVV של הלקוחות כדי להבין איך פגיעת ווב פשוטה מובילה לזליגת מידע קריטית.
שלב 1: מאיפה מביאים את העוגייה? (הכנת המפתח)
כדי ש-sqlmap יוכל לעבוד בתוך העמודים הפנימיים של האתר, הוא חייב להזדהות מול השרת בשמנו. בשביל זה אנחנו צריכים להביא לו את עוגיית החיבור שלנו (ה-Session). אם לא נעשה את זה, השרת יזהה שמדובר בבקשה אנונימית, יחסום את הכלי, והפריצה תיכשל.
לבחרתכם שתי שיטות פשוטות להוצאת העוגייה מתוך הדפדפן:
שיטה א': דרך לשונית האחסון (Storage) – השיטה הוויזואלית
בעמוד הפנימי של האתר (View Account Details), לחצו על מקש F12 במקלדת כדי לפתוח את כלי המפתחים.
בתפריט העליון של כלי המפתחים, לחצו על הלשונית Storage (בדפדפן פיירפוקס) או Application (בדפדפן כרום).
בתפריט הצדדי שייפתח, לחצו על החץ הקטן ליד Cookies, ואז בחרו בכתובת של האתר שלכם (https://127.0.0.1).
במרכז המסך תיפתח טבלה. חפשו בעמודת ה-Name את השורה שנקראת PHPSESSID.
הערך הארוך שמופיע לידה בעמודת Value הוא ה-Session ID שלכם. העתיקו אותו.
שיטה ב': דרך ה-Console – שיטת הקוד הזריזה
באותו מסך של כלי המפתחים (F12), עברו ללשונית Console (קונסול).
הקלידו את השורה הבאה בדיוק ולחצו Enter:
document.cookie
הדפדפן ידפיס לכם את העוגייה על המסך. העתיקו את רצף האותיות והמספרים שמופיע מיד אחרי הסימן = של ה-PHPSESSID.
שלב 2: שלב הביצוע והרצת החילוץ הממוקד
עכשיו, כשבידכם העוגייה שלכם, פתחו את הטרמינל ב-Kali Linux והריצו את הפקודה הבאה.
️ שימו לב: החליפו את הטקסט YOUR_SESSION_ID ברצף האותיות והמספרים שהעתקתם הרגע מהדפדפן!
sqlmap -u "https://127.0.0.1/index.php?page=user-info.php&username=aa&password=an&user-info-php-submit-button=View+Account+Details" -p username --dbms=mysql --batch --cookie="PHPSESSID=YOUR_SESSION_ID" -D mutillidae -T credit_cards --dump
מה קרה כאן מאחורי הקלעים?
-u "https://...": כתובת היעד הציבורית של העמוד הפנימי אותו אנחנו תוקפים.
-p username: מנחה את הכלי לבצע את המניפולציות אך ורק על השדה של שם המשתמש, מה שמקצר את זמן הבדיקה משמעותית.
--dbms=mysql: אומר לכלי שמסד הנתונים מאחורי הקלעים הוא מסוג MySQL, וחוסך לו זמן של ניחוש ובדיקת פקודות שלא מתאימות לשרת.
--cookie="PHPSESSID=...": מזריק את תעודת הזהות שלכם לתוך הכלי כדי שהשרת יזהה אותו כמשתמש מחובר לגיטימי וייתן לו לסרוק מבפנים.
--batch: פרמטר מפתח בעבודה מקצועית. הוא מורה לכלי לרוץ אוטומטית ולבחר תמיד בתשובות ברירת המחדל (Default) בלי לעצור כל שתי שניות ולשאול אותנו שאלות בטרמינל שיכולות לתקוע את התהליך.
-D mutillidae -T credit_cards: מנווט את sqlmap ישירות לבסיס הנתונים mutillidae ולטבלת כרטיסי האשראי הספציפית credit_cards.
--dump: פקודת המחץ שמרוקנת את תוכן הטבלה ומציגה אותו על המסך.
פלט הטרמינל (תוצאת החילוץ):
תוך שניות בודדות הכלי ישאב את הנתונים בעזרת טכניקת הזרקה מהירה ויפלוט לכם על המסך את הטבלה הבאה:
Database: mutillidae
Table: credit_cards
[5 entries]
+------------------+-----------------+-----------------+----------+
| credit_card_num | expiration_date | card_cvv | cc_owner |
+------------------+-----------------+-----------------+----------+
| 1234567812345678 | 12/2029 | 455 | admin |
| 9876543298765432 | 05/2028 | 122 | gordon |
| 5555444433332222 | 08/2030 | 901 | john |
+------------------+-----------------+-----------------+----------+
מה למדנו היום?
✓ כיצד להשתמש בהרשאה קיימת לצורך בדיקה פנימית.
✓ מה תפקידה של עוגיית Session.
✓ כיצד ניתן להתמקד בטבלה ספציפית במסד הנתונים.
✓ מדוע חשיפת מידע רגיש היא הסיכון האמיתי שמאחורי SQL Injection.
✓ למה חשוב להגן על מידע רגיש גם בתוך מסד הנתונים עצמו.
אם ישנו חוסר בהבנה אתם מוזמנים להפנות את השאלות שלכם כאן