לדלג לתוכן

אוטומציה של תקיפות - תרגיל

תרגיל 1 - בניית צינור סריקה

משימות

בנו סקריפט Bash שמבצע צינור סריקה מלא. הסקריפט צריך:

  1. לקבל דומיין כפרמטר
  2. לבצע סריקת תת-דומיינים עם לפחות 2 כלים שונים
  3. לבדוק זמינות של כל תת-דומיין
  4. לזהות טכנולוגיות
  5. לבצע גילוי תוכן על כל תת-דומיין חי
  6. להריץ סריקת Nuclei
  7. לייצר דוח סיכום

דרישות טכניות

#!/bin/bash
# recon_pipeline.sh

TARGET=$1

# TODO: בדיקת קלט
# TODO: יצירת ספריית פלט
# TODO: שלב 1 - סריקת תת-דומיינים
# TODO: שלב 2 - בדיקת זמינות
# TODO: שלב 3 - זיהוי טכנולוגיות
# TODO: שלב 4 - גילוי תוכן
# TODO: שלב 5 - סריקת חולשות
# TODO: דוח סיכום

קריטריונים

  • הסקריפט רץ ללא שגיאות
  • כל שלב שומר תוצאות לקובץ נפרד
  • דוח סיכום בסוף הריצה
  • טיפול במקרים של כלי חסר (בדיקה אם הכלי מותקן)
  • תמיכה בהרצה חוזרת (לא דורס תוצאות ישנות)

תרגיל 2 - כתיבת תבניות Nuclei

משימה א - תבנית לזיהוי API Keys חשופים

כתבו תבנית Nuclei שמזהה API keys חשופים בתגובות HTTP:

id: exposed-api-keys
# TODO: השלימו את התבנית

info:
  name: # TODO
  severity: # TODO
  tags: # TODO

requests:
  - method: GET
    path:
      # TODO: נתיבים לבדיקה

    matchers:
      # TODO: ביטויים רגולריים לזיהוי API keys

סוגי מפתחות שצריך לזהות:
- AWS Access Key
- GitHub Token
- Slack Token
- Google API Key
- Stripe Key

משימה ב - תבנית לזיהוי Open Redirect

id: open-redirect-detection
# TODO: השלימו את התבנית

הפיילודים צריכים לכלול:
- הפניה ישירה: ?redirect=https://evil.com
- עם קידוד: ?redirect=https%3A%2F%2Fevil.com
- עם protocol-relative: ?redirect=//evil.com
- עם backslash: ?redirect=https://evil.com\@target.com

משימה ג - תבנית לזיהוי GraphQL Introspection

כתבו תבנית שמזהה GraphQL endpoints עם introspection מופעל:

id: graphql-introspection
# TODO: השלימו

תרגיל 3 - סקריפט בדיקת JWT

משימות

כתבו סקריפט Python שמבצע את הבדיקות הבאות על JWT:

  1. פענוח הטוקן והדפסת Header ו-Payload
  2. בדיקת Algorithm None
  3. בדיקת סודות חלשים (מרשימה)
  4. בדיקת שינוי Claims (שינוי role לאדמין)
  5. בדיקת תוקף הטוקן (exp claim)
#!/usr/bin/env python3
"""jwt_tester.py"""

import jwt
import json
import base64
import sys

class JWTTester:
    def __init__(self, token, target_url):
        self.token = token
        self.target_url = target_url
        # TODO: פענוח הטוקן

    def decode_and_display(self):
        """הצגת תוכן הטוקן"""
        # TODO

    def test_none_algorithm(self):
        """בדיקת Algorithm None"""
        # TODO

    def test_weak_secrets(self, wordlist_path):
        """בדיקת סודות חלשים"""
        # TODO

    def test_claim_modification(self):
        """בדיקת שינוי Claims"""
        # TODO

    def run_all(self):
        """הרצת כל הבדיקות"""
        # TODO

if __name__ == '__main__':
    if len(sys.argv) < 3:
        print(f"שימוש: {sys.argv[0]} <token> <target_url>")
        sys.exit(1)

    tester = JWTTester(sys.argv[1], sys.argv[2])
    tester.run_all()

קריטריונים

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

תרגיל 4 - דפדפן Headless לאימות XSS

משימות

כתבו סקריפט Python עם Playwright שמבצע:

  1. גלישה לדף יעד עם פרמטר פגיע
  2. הזרקת payloads שונים
  3. בדיקה אם ה-XSS הופעל (dialog, DOM changes, network requests)
  4. צילום מסך כהוכחה
  5. ייצור דוח HTML עם כל הממצאים
#!/usr/bin/env python3
"""xss_checker.py"""

import asyncio
from playwright.async_api import async_playwright

class XSSChecker:
    def __init__(self, target_url, params):
        self.target_url = target_url
        self.params = params
        self.payloads = [
            # TODO: הוסיפו לפחות 10 payloads
        ]
        self.findings = []

    async def check_param(self, page, param, payload):
        """בדיקת פרמטר בודד"""
        # TODO

    async def generate_report(self):
        """ייצור דוח HTML"""
        # TODO

    async def run(self):
        """הרצת הבדיקה"""
        # TODO

if __name__ == '__main__':
    checker = XSSChecker(
        'http://target:8080/search',
        ['q', 'query', 'search']
    )
    asyncio.run(checker.run())

קריטריונים

  • הסקריפט מזהה לפחות 3 סוגי XSS: Reflected, DOM, ו-Event-based
  • צילום מסך לכל ממצא
  • דוח HTML מסודר
  • טיפול ב-timeouts ושגיאות

תרגיל 5 - אתגר מסכם

משימה

בנו מערכת אוטומציה מלאה שמשלבת את כל הכלים. המערכת צריכה:

  1. לקבל רשימת יעדים
  2. להריץ צינור סריקה על כל יעד
  3. לזהות חולשות פוטנציאליות
  4. לנסות לאשר חולשות אוטומטית (XSS, SQLi)
  5. לייצר דוח מקיף

מבנה מומלץ

automation/
  recon/
    subdomain_enum.py
    alive_check.py
    tech_detect.py
  scanners/
    xss_scanner.py
    sqli_scanner.py
    ssrf_scanner.py
    jwt_tester.py
  reporting/
    html_report.py
    slack_notify.py
  main.py
  config.yaml

קובץ הגדרות

# config.yaml
targets:
  - domain: target.com
    scope:
      - "*.target.com"
    exclude:
      - "staging.target.com"

concurrency: 20
timeout: 10

notifications:
  slack_webhook: "https://hooks.slack.com/..."

output_dir: "./results"

קריטריונים

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