ZAP (Zed Attack Proxy) - مسح الأمان لتطبيقات الويب
ZAP (Zed Attack Proxy، التي تحتفظ بها Checkmarx، وسابقًا من OWASP الرئيسية) هي أداة dynamic application security testing (DAST) مفتوحة المصدر مجانية. تتخذ موضعًا بين المتصفح والهدف كموكيل اعتراض، ثم تجري مسحًا سلبيًا ونشطًا لتطبيقات الويب والواجهات البرمجية بحثًا عن الثغرات. تجمع بين الزحف والقزم والفازينج والماسح النشط ودعم WebSocket ومسح REST/GraphQL/SOAP للواجهات البرمجية — قابلة للاستخدام بشكل تفاعلي عبر واجهة رسومية أو بدون رأس عبر CLI والواجهة البرمجية لـ CI/CD.
التثبيت
| المنصة | الأمر |
|---|
| Docker (موصى به لـ CI) | docker pull zaproxy/zap-stable |
| Debian/Ubuntu | قم بتنزيل المثبّت من موقع ZAP |
| macOS (Homebrew) | brew install --cask zap |
| متعدد المنصات | قم بتنزيل حزمة متعددة المنصات (يتطلب Java) |
| التحقق | zap.sh -version (أو zap.bat على Windows) |
أوضاع التشغيل
| الأمر | الوصف |
|---|
zap.sh | تشغيل واجهة سطح المكتب الرسومية |
zap.sh -daemon -host 0.0.0.0 -port 8080 | خادم بدون رأس مع الواجهة البرمجية |
zap.sh -cmd -quickurl https://target -quickout report.html | مسح سريع في خطوة واحدة إلى تقرير |
docker run -t zaproxy/zap-stable zap-baseline.py -t https://target | مسح خطي (سلبي) في Docker |
إطار عمل الأتمتة (المسح المكتوب)
أفضل طريق لتكامل CI هي نصوص المسح المعبأة مع ZAP.
| النص | الغرض |
|---|
zap-baseline.py -t URL | مسح سلبي + زحف (سريع، آمن لـ CI) |
zap-full-scan.py -t URL | الأساسي + مسح هجوم نشط |
zap-api-scan.py -t openapi.json -f openapi | مسح واجهة برمجية من تعريف OpenAPI/SOAP/GraphQL |
-r report.html | كتابة تقرير HTML |
-J report.json | كتابة تقرير JSON |
-c config.conf | تصفية التنبيهات / تكوين القاعدة |
# مسح خطي آمن لـ CI، فشل البناء عند وجود النتائج
docker run -t zaproxy/zap-stable zap-baseline.py \
-t https://staging.example.com -r zap-report.html
المكونات الأساسية
| المكون | الدور |
|---|
| Proxy | اعتراض/فحص/تعديل حركة HTTP(S) |
| Spider | الزحف إلى التطبيق لاكتشاف عناوين URL |
| Ajax Spider | زحف التطبيقات الثقيلة في JavaScript عبر متصفح حقيقي |
| Passive Scan | تحذيرات المشاكل من حركة المراقبة (بدون هجمات) |
| Active Scan | إرسال حمولات الهجوم للعثور على الثغرات |
| Fuzzer | حقن قوائم الحمولات في الطلبات |
إعداد الموكيل
| الخطوة | الكيفية |
|---|
| تعيين موكيل المتصفح | وجّه المتصفح إلى localhost:8080 |
| تثبيت شهادة ZAP CA | استورد شهادة جذر ZAP لاعتراض HTTPS |
| استكشاف يدوي | تصفح التطبيق؛ تسجل ZAP حركة المرور |
| ثم مسح | زحف + مسح نشط للشجرة المكتشفة |
واجهة برمجية (أتمتة)
مع تشغيل الخادم، قم بتشغيل ZAP عبر HTTP.
| نقطة النهاية | الإجراء |
|---|
/JSON/spider/action/scan/?url=... | بدء زحف |
/JSON/ascan/action/scan/?url=... | بدء مسح نشط |
/JSON/core/view/alerts/ | استرجاع النتائج |
/OTHER/core/other/htmlreport/ | إنشاء تقرير HTML |
| API key | مرر apikey=... مع الطلبات |
المصادقة والسياق
| المفهوم | الاستخدام |
|---|
| Context | حدّد نطاق الهدف والمصادقة |
| Session mgmt | إدارة الجلسات بناءً على ملف تعريف الارتباط/HTTP/البرنامج |
| Authentication | مصادقة النموذج أو JSON أو HTTP أو البرنامج |
| Users | اختبر كمستخدمين مصرح لهم |
سير العمل الشائع
# مسح خطي سلبي سريع ضد التدريج في CI
zap-baseline.py -t https://staging.example.com -r report.html
# مسح واجهة REST من مواصفاتها OpenAPI
zap-api-scan.py -t https://api.example.com/openapi.json -f openapi -J out.json
# مسح نشط كامل (الأهداف المرخصة فقط)
zap-full-scan.py -t https://target.example.com -r full.html
ZAP مقابل أدوات DAST الأخرى
| الجانب | ZAP | Nuclei | Burp Suite | Nikto |
|---|
| النموذج | موكيل + زحف + DAST نشط | ماسح CVE المستند على القالب | موكيل + يدوي + ماسح | ماسح سوء تكوين الخادم |
| التكلفة | مفتوح المصدر مجاني | مفتوح المصدر مجاني | مجاني + Pro مدفوع | مجاني |
| API/CI | قوي (API + نصوص) | قوي | ملحقات Pro | CLI |
| الأفضل لـ | DAST كامل للتطبيق، CI | فحوصات CVE المعروفة السريعة | الاختبار اليدوي للاختراق | فحوصات الخادم السريعة |
الاقتران الشائع: Nuclei للكشف السريع عن CVE المعروفة بالإضافة إلى ZAP لزحف DAST على مستوى التطبيق.
الموارد