
أداة مهاجمة API بضربة واحدة - تعثر على رابط API من الجذر المحدد وتحاكي الهجمات الآلية
ماسح أمني لواجهات برمجة التطبيقات (API) من نوع الصندوق الأسود يعمل بخط أنابيب كامل ومكتوب بلغة Python. يقوم بإحصاء نقاط النهاية (endpoints)، وتحديد المعاملات (parameters)، وفحص طرق HTTP، واختبار منطق المصادقة/التفويض، وتشغيل محاكاة هجمات OWASP API Top 10 القياسية (BOLA، Broken Auth، BFLA، Mass Assignment، Rate Limiting، SSRF، Security Misconfiguration، إلخ)، بالإضافة إلى مُفزِّع موثوقية بأسلوب RESTler يبحث عن الأعطال/أخطاء 500 بمعزل عن أي فئة من فئات OWASP.
جميع السكربتات الأساسية مصممة لتكون stdlib-only (المكتبة القياسية فقط). إذا لم تكن الأدوات أو المكتبات الخارجية موجودة على النظام، فإن apiharvester يتراجع تلقائيًا إلى تطبيقات Python خالصة لضمان التنفيذ الجاهز فور التثبيت.
apiharvester/ — دليل حزمة Python الرئيسي. يُشغَّل عبر python3 -m apiharvester.scripts/check_requirements.sh — يتحقق من المتطلبات المسبقة من الملفات التنفيذية والحمولات (payloads).scripts/install_requirements.sh — يُنزِّل ملفات حمولات SecLists المطلوبة ويثبّت الملفات التنفيذية اختياريًا (عبر go install وpip).apiharvester.py — نسخة مستقلة أحادية الملف من الماسح.api_deep_discovery.py — زاحف ديناميكي يستخدم كود متصفح Katana بلا واجهة لاكتشاف نقاط نهاية SPA/XHR الديناميكية.api_intelligence_engine.py — مُجمِّع خط الأنابيب ومصنِّف الثغرات السلبي.apisec.py — نسخة بديلة أحادية الملف من الماسح الأمني.requirements.txt — قائمة تبعيات Python (أساسًا للمُسرِّعات الاختيارية القائمة على Python).payloads/ — ملفات قوائم الكلمات والحمولات للاستطلاع:
params.txt — 25,889 مرشحًا لأسماء المعاملات لاختبار نقاط نهاية APIdirectories.txt — 62,281 نمطًا شائعًا لمسارات API وأسماء الأدلةsubdomains.txt — 5,000 متغير للنطاقات الفرعية لاكتشاف APIkiterunner/ — ملفات مخطط مسارات Kiterunner لإحصاء نقاط النهاية المُسرَّعالتحقق من المتطلبات: شغِّل السكربت للقراءة فقط للتحقق من توفر الأدوات/الحمولات الأساسية:
./scripts/check_requirements.sh
تثبيت الأدوات الاختيارية وملفات الحمولات: شغِّل سكربت التثبيت لجلب قوائم كلمات SecLists الأعلى تلقائيًا، ومخططات مسارات Kiterunner، وتثبيت مُسرِّعات الأدوات:
./scripts/install_requirements.sh
تثبيت حزم Python:
pip3 install -r requirements.txt
شغِّل الماسح مباشرةً ضد نطاق هدف:
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (موضعي): نطاق FQDN المراد فحصه.--auth: رمز وصول عالي الصلاحيات للفحوصات المُصادَق عليها (مثل جلسة مستخدم صالحة).--auth2: رمز وصول منخفض الصلاحيات لاختبار BOLA / BFLA / تصعيد الصلاحيات عبر الحسابات.--threads: حجم مجمّع الخيوط (افتراضي: 20).--timeout: مهلة طلب HTTP بالثواني (افتراضي: 10).--burst: عدد الطلبات السريعة للتحقق من تحديد المعدل (افتراضي: 20).--json: حفظ تقرير بصيغة JSONL (نتائج JSON مفصولة بأسطر).--html: حفظ تقرير لوحة تحكم HTML تفاعلية.--output-dir: تجاوز مسار دليل الإخراج الافتراضي (مثل ./scans/example.com).--skip-recon: تخطي مراحل الاستطلاع، واستخدام ملفات الإخراج الموجودة من تشغيل سابق.--recon-dir: تحميل دليل إخراج استطلاع موجود مسبقًا وتشغيل مراحل الهجوم فقط.--attacks-only: تشغيل مراحل الهجوم فقط (يستلزم ضمنيًا --skip-recon).--attacks: قائمة هجمات مفصولة بفواصل لتشغيلها. الافتراضي: الكل. المتاح:
bola,broken_auth,mass_assignment,rate_limit,bfla,business_logic,
ssrf,misconfiguration,inventory,sspp,injection,reliability,secrets
OWASP API Top 10 (API1–API10:2023):
bola) — تفويض الكائنات المكسور. يختبر نقاط نهاية معرّفات الكائنات عبر تخمين المعرّفات (0، 1، 2، 99، "admin"، "test"، متغيرات UUID، إلخ) ورموز مصادقة تفاضلية.broken_auth) — اكتشاف نقاط النهاية غير المُصادَق عليها، وكسر الأسرار الضعيفة في JWT، وتجاوز alg=none، والتلاعب بالمطالبات (claims)، وحقن kid، بالإضافة إلى تجاوزات طريقة OPTIONS/HEAD.mass_assignment) — حقن حقول تصعيد الصلاحيات في أجسام PUT/PATCH (role، is_admin، verified، balance، إلخ).rate_limit) — يرسل 20+ طلبًا سريعًا؛ ويُعلِّم نقاط النهاية التي تُرجع 200 بدلًا من 429 Retry-After.bfla) — تفويض الوظائف المكسور. يختبر المسارات الحساسة (/admin، /roles، /impersonate، إلخ) مع وبدون رمز منخفض الصلاحيات.business_logic) — انتهاكات سير العمل/آلة الحالة (مثل تحديث طلب بعد الدفع).ssrf) — يختبر تزوير الطلبات من جانب الخادم عبر معاملات URL وأجسام الطلبات.misconfiguration) — CORS (نشط: يرسل Origin غير موثوق)، ورؤوس أمنية مفقودة، وأخطاء مطوّلة، وتسريبات بانر الخادم.inventory) — نقاط نهاية غير موثّقة، ونقاط نهاية مهجورة، وواجهات إدارية مكشوفة.sspp) — المعالجة اللاحقة غير الآمنة من جانب الخادم (حقن القوالب، حقن XPath، إلخ).هجمات إضافية:
injection) — حقن SQL، وXSS، وحقن الأوامر (قائم على الأخطاء + أعمى قائم على الوقت).reliability) — تشويش بأسلوب RESTler: اختبار الحدود/المدخلات المشوّهة للعثور على أعطال 5xx وأخطاء موثوقية الخادم (بمعزل عن فئات OWASP).secrets) — مطابقة الأنماط لبيانات الاعتماد المسرّبة في أجسام الاستجابة: مفاتيح AWS Access، ومفاتيح Google API، ورموز Slack، ومفاتيح Stripe، ورموز GitHub، وكتل المفاتيح الخاصة، وJWTs، وإسنادات الأسرار العامة (api_key=...، password=...، إلخ).فحص كامل مع رمز مُصادَق عليه + رمز منخفض الصلاحيات (الأفضل لـ BOLA/BFLA):
python3 -m apiharvester api.example.com \
--auth "Bearer high_priv_token_here" \
--auth2 "Bearer low_priv_token_here" \
--html report.html \
--json findings.jsonl
استطلاع سريع فقط (اكتشاف نقاط النهاية، بدون هجمات):
python3 -m apiharvester example.com --skip-recon --attacks ""
(أو ببساطة لا تُوفِّر --auth لتخطي بعض مراحل الهجوم.)
إعادة تشغيل الهجمات فقط ضد بيانات استطلاع محفوظة (تكرار سريع):
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
تشغيل هجمات محددة فقط (مثل BOLA + Secrets):
python3 -m apiharvester example.com --attacks bola,secrets
تجاوز أخطاء شهادات TLS (وكيل الشركة، بيئة الاختبار):
# apiharvester uses a permissive TLS context by default — no extra flags needed
# All HTTPS endpoints work even with self-signed/intercepted certs
python3 -m apiharvester https://staging-api.example.com
كل فحص يكتب مخرجات الاستطلاع الخاصة به إلى دليل إخراج منظّم قبل تشغيل مرحلة الهجوم. افتراضيًا يكون:
output/{target}_{YYYYMMDD_HHMMSS}/
مثل output/example.com_20260715_140233/. تجاوز الموقع عبر --output-dir /path/to/dir إذا أردت مسارًا ثابتًا وقابلًا للتنبؤ (مفيد للسكربتات/CI).