תקיפת תהליכים מרובי שלבים - תרגול¶
תרגיל 1 - דילוג על שלב אימות (Apprentice)¶
מעבדה: 2FA simple bypass (PortSwigger)
רקע:
מערכת התחברות עם אימות דו-שלבי (2FA). המטרה: לדלג על שלב הזנת קוד ה-OTP ולגשת ישירות לחשבון.
שלבים:
- התחברו עם חשבון הבדיקה שלכם (
wiener:peter) ועברו את כל תהליך ה-2FA - שימו לב ל-URL אחרי השלמת ה-2FA (למשל
/my-account) - התנתקו
- התחברו עם פרטי הקורבן (
carlos:montoya) - כאשר אתם מגיעים לדף ה-2FA, במקום להזין קוד - נווטו ישירות ל-
/my-account - בדקו אם קיבלתם גישה ללא הזנת קוד OTP
שאלה: למה הדילוג עבד? מה השרת לא בדק?
תרגיל 2 - עקיפת 2FA באמצעות לוגיקה שבורה (Practitioner)¶
מעבדה: 2FA broken logic (PortSwigger)
רקע:
מערכת 2FA שבה ניתן לשנות את המשתמש בבקשת האימות. המטרה: להשתמש בקוד 2FA כדי לגשת לחשבון של משתמש אחר.
שלבים:
- התחברו עם החשבון שלכם ולכדו את כל הבקשות
- בדקו את בקשת האימות של ה-2FA:
- שימו לב לפרמטר
verifyב-cookie - הוא קובע לאיזה משתמש מוצמד הקוד - שנו את הערך ל-
verify=carlos - שלחו בקשת ה-2FA עם bruteforce על קוד ה-OTP (4 ספרות):
- השתמשו ב-Burp Intruder עם payload מספרי 0000-9999
תרגיל 3 - שינוי פרמטרים בין שלבים (Practitioner)¶
מעבדה: Insufficient workflow validation (PortSwigger)
רקע:
חנות מקוונת עם תהליך רכישה מרובה שלבים. המטרה: לרכוש מוצר ללא תשלום.
שלבים:
- רכשו מוצר זול שהיתרה שלכם מספיקה לו ולכדו את כל הבקשות
- מפו את תהליך הרכישה:
- הוספה לעגלה
- מעבר לתשלום
- אישור הזמנה
- זהו את בקשת האישור הסופית
- הוסיפו את המוצר היקר לעגלה
- שלחו ישירות את בקשת האישור (שלכדתם בשלב 2)
- בדקו אם ההזמנה עברה ללא תשלום
רמז: הבקשה הסופית כנראה POST /cart/order-confirmation.
תרגיל 4 - מניפולציית תהליך שינוי סיסמה (Practitioner)¶
מעבדה: Password reset broken logic (PortSwigger)
רקע:
מנגנון איפוס סיסמה שבו ניתן לשנות את המשתמש בשלב ההגדרה. המטרה: לשנות את הסיסמה של משתמש אחר.
שלבים:
- בקשו איפוס סיסמה לחשבון שלכם
- לחצו על הלינק ב-email ולכדו את בקשת שינוי הסיסמה:
POST /forgot-password?temp-forgot-password-token=TOKEN HTTP/1.1
temp-forgot-password-token=TOKEN&username=wiener&new-password-1=pass&new-password-2=pass
- שימו לב שה-
usernameנשלח כפרמטר - שנו את ה-
usernameל-carlos - שלחו את הבקשה
- נסו להתחבר כ-
carlosעם הסיסמה החדשה
שאלה: מה השרת היה צריך לבדוק ולא בדק?
תרגיל 5 - ניצול תהליך שינוי email (Practitioner)¶
רקע:
אפליקציה שבה שינוי email דורש אימות באמצעות לינק שנשלח ל-email הישן. המטרה: לשנות את ה-email ללא אימות.
שלבים:
- בצעו שינוי email רגיל ולכדו את כל הבקשות
- מפו את התהליך:
שלב 1: POST /profile/change-email {"newEmail": "new@example.com"}
שלב 2: לינק אימות נשלח ל-email הישן
שלב 3: GET /verify-email-change?token=abc123
שלב 4: ה-email מתעדכן
- נסו לגשת ישירות לשלב 4 ללא עקיפת שלב 2
- נסו לשנות את ה-email בבקשה אחרת:
- בדקו אם יש נקודת קצה נוספת שמאפשרת עדכון email ללא אימות
תרגיל 6 - תקיפת שידור חוזר על תשלום (Practitioner)¶
רקע:
מערכת תשלום שבה טוקן האישור לא מבוטל אחרי שימוש. המטרה: לבצע העברה מרובה עם אותו טוקן.
שלבים:
- בצעו העברת כספים והעבירו סכום קטן (1 דולר)
- לכדו את בקשת האישור:
- שלחו את הבקשה שוב - האם ההעברה מתבצעת פעם נוספת?
- שלחו שוב ושוב
- בדקו את היתרה של הנמען - האם היא עלתה?
שאלה: מה ההבדל בין תקיפה זו לבין תנאי מרוץ? מתי משתמשים בכל טכניקה?
תרגיל 7 - עקיפת מנגנון אישור הזמנה (Expert)¶
רקע:
חנות מקוונת עם מנגנון אישור הזמנה מרובה שלבים. המטרה: לשלב מספר חולשות כדי לרכוש מוצר יקר בחינם.
שלבים:
- מפו את כל תהליך הרכישה (4-5 שלבים)
- בדקו כל שלב בנפרד:
- האם אפשר לדלג עליו?
- האם אפשר לשנות פרמטרים?
- האם אפשר לשדר מחדש?
- נסו את השילובים הבאים:
- הוספת מוצר זול, תשלום, שינוי המוצר ליקר, אישור
- דילוג על שלב התשלום ישירות לאישור
- שינוי הסכום בבקשת התשלום
- מצאו את השילוב שעובד
רמזים:
- שימו לב לסדר הבקשות וליחסים ביניהן
- בדקו מה נשמר ב-session ומה נשלח כפרמטר
- נסו לפתוח שני חלונות מקבילים
תרגיל 8 - ניתוח תהליך ותכנון תקיפה (Expert)¶
לפניכם תרשים של תהליך רכישה. תכננו תקיפה עבור כל וקטור אפשרי:
[לקוח]
|
v
POST /cart/add (productId, quantity)
|
v
POST /cart/apply-coupon (code) <-- שלב אופציונלי
|
v
POST /checkout/start
|
v
POST /checkout/address (address)
|
v
POST /checkout/payment (cardDetails, amount)
|
v
POST /checkout/confirm (paymentToken)
|
v
[הזמנה נוצרת]
משימות:
- רשמו לפחות 5 וקטורי תקיפה שונים
- עבור כל וקטור:
- תארו את הבקשות שצריך לשלוח
- ציינו מה משנים או מדלגים
- הסבירו למה זה עשוי לעבוד
- דרגו את הווקטורים לפי סבירות הצלחה
- כתבו את ההגנות הנדרשות לכל וקטור
שאלות נוספות:
- מה ההבדל בין נעילת העגלה לבין יצירת snapshot?
- למה טוקן חתום (HMAC) עדיף על מעקב session?
- איך תנאי מרוץ משתלב עם תקיפות מרובות שלבים?