אוטומציה של תקיפות - תרגיל¶
תרגיל 1 - בניית צינור סריקה¶
משימות¶
בנו סקריפט Bash שמבצע צינור סריקה מלא. הסקריפט צריך:
- לקבל דומיין כפרמטר
- לבצע סריקת תת-דומיינים עם לפחות 2 כלים שונים
- לבדוק זמינות של כל תת-דומיין
- לזהות טכנולוגיות
- לבצע גילוי תוכן על כל תת-דומיין חי
- להריץ סריקת Nuclei
- לייצר דוח סיכום
דרישות טכניות¶
#!/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¶
הפיילודים צריכים לכלול:
- הפניה ישירה: ?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 מופעל:
תרגיל 3 - סקריפט בדיקת JWT¶
משימות¶
כתבו סקריפט Python שמבצע את הבדיקות הבאות על JWT:
- פענוח הטוקן והדפסת Header ו-Payload
- בדיקת Algorithm None
- בדיקת סודות חלשים (מרשימה)
- בדיקת שינוי Claims (שינוי role לאדמין)
- בדיקת תוקף הטוקן (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 שמבצע:
- גלישה לדף יעד עם פרמטר פגיע
- הזרקת payloads שונים
- בדיקה אם ה-XSS הופעל (dialog, DOM changes, network requests)
- צילום מסך כהוכחה
- ייצור דוח 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 - אתגר מסכם¶
משימה¶
בנו מערכת אוטומציה מלאה שמשלבת את כל הכלים. המערכת צריכה:
- לקבל רשימת יעדים
- להריץ צינור סריקה על כל יעד
- לזהות חולשות פוטנציאליות
- לנסות לאשר חולשות אוטומטית (XSS, SQLi)
- לייצר דוח מקיף
מבנה מומלץ¶
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 סופי
- אפשרות להרצה חוזרת ללא כפילויות