מ-Low ל-Critical - תרגיל¶
תרגיל 1 - הסלמת Self-XSS¶
תיאור¶
ביישום התרגול קיימות שתי חולשות:
1. Self-XSS בשדה "הערה פרטית" בפרופיל (רק המשתמש עצמו רואה)
2. Login CSRF - אפשר לחבר קורבן לחשבון אחר ללא הגנת CSRF
משימות¶
- אתרו את ה-Self-XSS - הזריקו payload לשדה ההערה הפרטית
- אתרו את ה-Login CSRF - בנו טופס HTML שמחבר קורבן לחשבון התוקף
- שרשרו את שתי החולשות:
- צרו חשבון תוקף עם Self-XSS מוזרק
- בנו דף שמבצע Login CSRF לחשבון התוקף
- ה-XSS יגנוב את ה-cookies של הקורבן מהחשבון האמיתי שלו
- כתבו דוח מקצועי שמציג את השרשרת כ-High/Critical
שאלות¶
- מהו ציון ה-CVSS של Self-XSS לבדו?
- מהו ציון ה-CVSS של Login CSRF לבדו?
- מהו ציון ה-CVSS של השרשרת המלאה?
- מה התיקון הפשוט ביותר ששובר את השרשרת?
תרגיל 2 - הסלמת Blind SSRF¶
תיאור¶
ביישום קיימת חולשת Blind SSRF בפיצ'ר "בדיקת זמינות שרת". ניתן לשלוח URL והמערכת מחזירה רק קוד סטטוס (200, 404, 500 וכו') - לא את תוכן התגובה.
משימות¶
- אשרו את ה-Blind SSRF - שלחו URL ובדקו שיש גישה פנימית
- סרקו את הרשת הפנימית:
- מצאו שירותים פנימיים על ידי סריקת טווח
10.0.0.0/24 - בדקו פורטים נפוצים: 80, 8080, 6379, 9200, 27017, 5432
- זהו את סוג השירותים שנמצאו (Redis, Elasticsearch, וכו')
- נסו לנצל שירות פנימי פגיע:
- אם נמצא Redis - נסו Gopher protocol
- אם נמצא Elasticsearch - נסו לקרוא מידע
- תעדו את כל השרשרת
# שלד לסקריפט
import requests
from concurrent.futures import ThreadPoolExecutor
SSRF_ENDPOINT = "http://target:8080/api/check-url"
def check_internal(url):
"""בדיקת URL דרך ה-SSRF"""
# TODO: השלימו
pass
def scan_network():
"""סריקת הרשת הפנימית"""
# TODO: השלימו
pass
def exploit_service(host, port, service_type):
"""ניצול שירות פנימי"""
# TODO: השלימו
pass
תרגיל 3 - הסלמת Information Disclosure¶
תיאור¶
באתר היעד נמצאו הממצאים הבאים:
1. חשיפת גרסת שרת בכותרות HTTP: Server: Apache/2.4.49
2. חשיפת קבצי .git - ספריית Git נגישה
3. חשיפת קובץ .env עם credentials חלקיים
משימות¶
- נתחו את גרסת ה-Apache - חפשו CVE ידועים
- שחזרו את קוד המקור מספריית ה-Git:
- נתחו את קוד המקור:
- חפשו חולשות (SQLi, command injection, וכו')
- חפשו secrets ו-credentials
- חפשו נקודות קצה נסתרות
- השתמשו בממצאים לניצול מלא
- כתבו דוח שמציג את השרשרת:
- ממצא ראשוני: Information Disclosure (Low)
- תוצאה סופית: [מה שהצלחתם להשיג]
תרגיל 4 - הסלמת Open Redirect¶
תיאור¶
באתר היעד יש:
1. Open Redirect בנקודת הקצה /go?url=
2. מנגנון OAuth להתחברות עם Google
3. האתר משתמש ב-redirect_uri שמקבל subdirectories
משימות¶
- אשרו את ה-Open Redirect
- נתחו את זרימת ה-OAuth:
- מהו ה-client_id?
- מהו ה-redirect_uri?
- מהו ה-response_type?
- נסו להחליף את ה-redirect_uri עם ה-Open Redirect
- הקימו שרת שמקבל את הטוקן שנגנב
- הדגימו Account Takeover מלא
שאלות נוספות¶
- מה ההבדל בין
response_type=codeל-response_type=tokenבהקשר של התקיפה? - האם התקיפה עובדת גם עם PKCE? הסבירו.
- מה התיקון הנכון לחולשה הזו?
תרגיל 5 - עקיפת Rate Limiting¶
תיאור¶
דף ההתחברות של היעד מגביל ל-5 ניסיונות התחברות לדקה. אחרי 5 ניסיונות, ה-IP נחסם ל-60 שניות.
משימות¶
- אשרו את מנגנון ה-Rate Limiting - בצעו 6 ניסיונות ובדקו את התגובה
- נסו לעקוף את המנגנון בשיטות הבאות:
- שינוי כותרות:
X-Forwarded-For,X-Real-IP,X-Originating-IP - שינוי רישיות באימייל
- הוספת רווחים או תווים מיוחדים לשם המשתמש
- שימוש בנקודת קצה חלופית (API vs Web)
- שינוי Content-Type
- אם הצלחתם לעקוף - כתבו סקריפט brute force:
- חשבו את ציון ה-CVSS:
- של עקיפת ה-Rate Limiting לבדה
- של השרשרת: עקיפה + Brute Force + Account Takeover
תרגיל 6 - דוח מקצועי¶
משימות¶
כתבו דוח Bug Bounty מקצועי עבור אחד מהתרגילים הקודמים. הדוח צריך לכלול:
- כותרת שמתארת את האימפקט הסופי (לא את החולשה הבודדת)
- ציון CVSS מחושב עם הסבר
- תיאור טכני של כל חולשה בנפרד
- תיאור השרשרת עם תרשים זרימה
- PoC מלא - סקריפט או שלבים מפורטים
- אימפקט עסקי
- תיקון מומלץ לכל חולשה