
ماسح متعدد الخيوط لاكتشاف نقاط نهاية Swagger/OpenAPI المكشوفة عبر نطاقات الويب والنطاقات الفرعية، مع كشف تلقائي لثغرات XSS، وتوليد إثبات المفهوم (PoC)، وتصفية النتائج الإيجابية الكاذبة لتقييم أمان واجهات برمجة التطبيقات.
تم تقديمها في BlackHat Arsenal 2024 (الرابط)
/swagger-ui/index.htmlيتطلب APIDetector v3 Python 3.x والحزم التالية:
flask # إطار الويب
requests # عميل HTTP
playwright # أتمتة المتصفح للقطات الشاشة
nest_asyncio # دعم الإدخال/الإخراج غير المتزامن
جميع التبعيات مدرجة في requirements.txt ويمكن تثبيتها تلقائياً أثناء الإعداد.
بعد تثبيت الحزم المطلوبة، تحتاج إلى تثبيت متصفحات Playwright:
python -m playwright install
هذا مطلوب لكي تعمل وظيفة لقطة الشاشة بشكل صحيح.
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
# على macOS/Linux:
python3 -m venv venv
source venv/bin/activate
# على Windows:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
playwright install
python app.py
python app.py --port 8080 --host 0.0.0.0
افتح متصفحك وانتقل إلى عنوان URL المعروض في الطرفية.
استخدام واجهة الويب:
يتم حفظ لقطات الشاشة في مجلد screenshots للرجوع إليها لاحقاً.
يقدم APIDetector v3 طريقتين للتفاعل مع الأداة: واجهة ويب حديثة (جديد في v3) وواجهة سطر أوامر تقليدية (أصلية).
python app.py [options]
الخيارات المتاحة:
| الخيار | الوصف | الافتراضي |
|---|---|---|
-p, --port | رقم المنفذ | 5000 |
--host | عنوان المضيف | 127.0.0.1 |
-d, --debug | تفعيل وضع التصحيح | False |
أمثلة:
# التشغيل بالإعدادات الافتراضية (localhost:5000)
python app.py
# التشغيل على منفذ مخصص
python app.py -p 8080
# السماح بالوصول الخارجي
python app.py --host 0.0.0.0
# التشغيل في وضع التصحيح
python app.py -d
الوصول إلى واجهة الويب:
عرض النتائج:
تشغيل APIDetector باستخدام سطر الأوامر. فيما يلي بعض الأمثلة على الاستخدام:
الاستخدام الشائع، فحص بقائمة من النطاقات الفرعية باستخدام 30 خيطاً ووكيل مستخدم Chrome وحفظ النتائج في ملف:
python apidetector.py -i list_of_company_subdomains.txt -o results_file.txt -t 30 -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
لفحص نطاق واحد:
python apidetector.py -d example.com
لفحص نطاقات متعددة من ملف:
python apidetector.py -i input_file.txt
لتحديد ملف الإخراج:
python apidetector.py -i input_file.txt -o output_file.txt
لاستخدام عدد محدد من الخيوط:
python apidetector.py -i input_file.txt -t 20
للفحص باستخدام بروتوكولي HTTP و HTTPS معاً:
python apidetector.py -m -d example.com
لتشغيل البرنامج النصي في الوضع الصامت (إخفاء المخرجات التفصيلية):
python apidetector.py -q -d example.com
لتشغيل البرنامج النصي مع وكيل مستخدم مخصص:
python apidetector.py -d example.com -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
إذا كنت تستخدم APIDetector v2، استبدل الأوامر بـ apidetectorv2.py.
-d, --domain: نطاق واحد للاختبار.-i, --input: ملف إدخال يحتوي على نطاقات فرعية للاختبار.-o, --output: ملف إخراج لكتابة عناوين URL الصالحة إليه.-t, --threads: عدد الخيوط المستخدمة للفحص (الافتراضي هو 10).-m, --mixed-mode: اختبار بروتوكولات HTTP و HTTPS معاً.-q, --quiet: تعطيل المخرجات التفصيلية (الوضع الافتراضي هو مفصّل).-ua, --user-agent: سلسلة وكيل مستخدم مخصصة للطلبات.يمكن أن يشكل كشف نقاط نهاية توثيق Swagger أو OpenAPI مخاطر مختلفة، تتعلق بشكل أساسي بكشف المعلومات. فيما يلي قائمة مرتبة بناءً على مستويات المخاطر المحتملة، مع تجميع نقاط النهاية المتشابهة معاً التي يفحصها APIDetector:
'/swagger-ui.html', '/swagger-ui/', '/swagger-ui/index.html', '/api/swagger-ui.html', '/documentation/swagger-ui.html', '/swagger/index.html', '/api/docs', '/docs', '/api/swagger-ui', '/documentation/swagger-ui'