לדלג לתוכן

שרשור חולשות - תרגיל

תרגיל 1 - שרשרת XSS ל-Account Takeover

תיאור

בסביבת התרגול יש יישום עם הפיצ'רים הבאים:
- מערכת פרופילים שמאפשרת הזנת HTML בשדה "אודות"
- נקודת קצה לשינוי סיסמה ללא הגנת CSRF
- נקודת קצה לשינוי מייל

משימות

  1. מצאו את חולשת ה-XSS בשדה הפרופיל
  2. וודאו שנקודת הקצה לשינוי סיסמה פגיעה ל-CSRF
  3. כתבו payload שמשרשר את שתי החולשות:
  4. ה-XSS מבצע קריאת AJAX לשינוי סיסמה
  5. ה-XSS מבצע קריאת AJAX לשינוי מייל
  6. ה-XSS שולח את פרטי הקורבן לשרת חיצוני
  7. הדגימו השתלטות מלאה על חשבון

רמזים

  • בדקו אם שדה ה-bio מסנן תגיות HTML
  • נסו <img src=x onerror=...> כנקודת התחלה
  • השתמשו ב-fetch() עם credentials: 'include' לביצוע הקריאות

תרגיל 2 - שרשרת SSRF ל-Cloud RCE

תיאור

יישום שמאפשר שליפת תוכן מ-URL חיצוני (פיצ'ר "תצוגה מקדימה של קישור"). היישום רץ על מופע AWS EC2.

משימות

  1. מצאו את נקודת הקצה הפגיעה ל-SSRF
  2. עקפו הגנות (אם קיימות) - DNS rebinding, redirect, או קידוד URL
  3. גשו לשירות metadata של AWS:
  4. קבלו את שם ה-role
  5. קבלו את ה-credentials (AccessKeyId, SecretAccessKey, Token)
  6. כתבו סקריפט Python שמשתמש ב-credentials שנגנבו:
  7. מזהה את ה-role וההרשאות
  8. מנסה לגשת ל-S3 buckets
  9. מנסה להריץ פקודות דרך SSM
  10. תעדו את כל השרשרת מתחילתה ועד סופה

רמזים

  • כתובת ה-metadata: http://169.254.169.254/
  • אם יש חסימה של כתובת ה-metadata, נסו:
  • קידוד: http://0xa9fea9fe/
  • עם redirect: העבירו דרך שרת שעושה redirect
  • DNS rebinding: דומיין שמצביע ל-169.254.169.254
  • השתמשו ב-boto3 לעבודה עם AWS

תרגיל 3 - שרשרת תלת-שלבית

תיאור

ביישום התרגול קיימות שלוש חולשות נפרדות:
1. IDOR בנקודת קצה /api/users/{id} - חושפת מידע על משתמשים
2. חשיפת API key של אדמין בתשובת ה-IDOR
3. נקודת קצה אדמין /api/admin/execute שמקבלת API key ומריצה פקודות

משימות

  1. כתבו סקריפט שסורק את נקודת הקצה של המשתמשים ומזהה חשבונות אדמין
  2. חלצו את ה-API key של האדמין
  3. השתמשו ב-API key כדי לגשת לנקודת הקצה של האדמין
  4. הריצו פקודה שמוכיחה RCE
# שלד לסקריפט
import requests

BASE_URL = "http://target:8080"
SESSION = requests.Session()

# שלב 1 - סריקת משתמשים
# TODO: השלימו

# שלב 2 - חילוץ API key
# TODO: השלימו

# שלב 3 - ניצול נקודת הקצה של האדמין
# TODO: השלימו

רמזים

  • סרקו IDs בטווח 1-100
  • חפשו שדה role: admin בתגובה
  • ה-API key נמצא בשדה api_key
  • נקודת הקצה מקבלת את ה-API key בכותרת X-API-Key

תרגיל 4 - מעבדות PortSwigger

השלימו את המעבדות הבאות ב-PortSwigger Web Security Academy:

מעבדות חובה

  1. Exploiting XSS to perform CSRF - שרשור XSS עם CSRF
  2. כתובת: https://portswigger.net/web-security/cross-site-scripting/exploiting/lab-perform-csrf

  3. SSRF with filter bypass via open redirection - שרשור SSRF עם Open Redirect

  4. כתובת: https://portswigger.net/web-security/ssrf/lab-ssrf-with-filter-bypass-via-open-redirection

  5. Stealing OAuth access tokens via an open redirect - שרשור OAuth עם Open Redirect

  6. כתובת: https://portswigger.net/web-security/oauth/lab-oauth-stealing-oauth-access-tokens-via-an-open-redirect

מעבדות מתקדמות

  1. Web cache poisoning to exploit XSS - שרשור Cache Poisoning עם XSS
  2. Multi-step exploitation - כל מעבדת Expert שדורשת שרשור

לכל מעבדה

  • תעדו את השלבים שביצעתם
  • צלמו מסך של כל שלב
  • כתבו את ה-payloads ששימשו אתכם
  • הסבירו את הקשר בין השלבים בשרשרת

תרגיל 5 - אתגר מרובה חולשות

תיאור

בנו סקריפט PoC מלא שמדגים שרשרת תקיפה מורכבת. הסקריפט צריך:

  1. לבצע סריקה ראשונית של היעד
  2. לזהות חולשות באופן אוטומטי
  3. לשרשר אותן לתקיפה אחת מלאה
  4. לייצר דוח של כל השלבים

דרישות

# המבנה הנדרש לסקריפט
class VulnChainExploit:
    def __init__(self, target):
        self.target = target
        self.findings = []
        self.chain = []

    def recon(self):
        """שלב 1 - סריקה"""
        pass

    def find_vulns(self):
        """שלב 2 - זיהוי חולשות"""
        pass

    def build_chain(self):
        """שלב 3 - בניית שרשרת"""
        pass

    def exploit(self):
        """שלב 4 - ניצול"""
        pass

    def generate_report(self):
        """שלב 5 - דוח"""
        pass

קריטריונים להצלחה

  • השרשרת כוללת לפחות 3 חולשות שונות
  • כל שלב מתועד עם קלט ופלט
  • הסקריפט מייצר דוח מסודר
  • קיים טיפול בשגיאות בכל שלב