
واجهة برمجة تطبيقات REST ضعيفة تحتوي على ثغرات OWASP العشر الأوائل لاختبار الأمان
واجهة برمجة التطبيقات الضعيفة (مبنية على OpenAPI 3)

فامبي هي واجهة برمجة تطبيقات ضعيفة تم إنشاؤها باستخدام Flask وتتضمن ثغرات من قائمة OWASP العشر الأولى لثغرات واجهات برمجة التطبيقات. تم إنشاؤها لأنني أردت واجهة برمجة تطبيقات ضعيفة لتقييم كفاءة الأدوات المستخدمة لاكتشاف مشكلات الأمان في واجهات برمجة التطبيقات. تتضمن مفتاح تشغيل/إيقاف للسماح لواجهة برمجة التطبيقات بأن تكون ضعيفة أو لا أثناء الاختبار. هذا يسمح بتغطية أفضل لحالات الإيجابيات/السلبيات الكاذبة. يمكن أيضًا استخدام فامبي لأغراض التعلم/التدريس. يمكنك العثور على مزيد من التفاصيل حول الثغرات في erev0s.com.
تدفق الإجراءات في فامبي يسير على النحو التالي: يمكن لمستخدم غير مسجل رؤية معلومات بسيطة عن المستخدمين الوهميين المضمنين في واجهة برمجة التطبيقات. يمكن للمستخدم التسجيل ثم تسجيل الدخول ليتم السماح له باستخدام الرمز المميز المستلم أثناء تسجيل الدخول لنشر كتاب. بالنسبة للكتاب المنشور، البيانات المقبولة هي العنوان وسر حول هذا الكتاب. كل كتاب فريد لكل مستخدم ويجب فقط لمالك الكتاب أن يُسمح له برؤية السر.
فيما يلي نظرة سريعة على الإجراءات المضمنة في الجدول التالي:
لمزيد من التفاصيل، يمكنك إما تشغيل فامبي وزيارة http://127.0.0.1:5000/ui/ أو استخدام خدمة مثل محرر Swagger مع توفير مواصفات OpenAPI الموجودة في الدليل openapi_specs.
إنه تطبيق Flask، لذا لتشغيله يمكنك تثبيت جميع المتطلبات ثم تشغيل app.py.
لتثبيت جميع المتطلبات، قم ببساطة بتشغيل pip3 install -r requirements.txt ثم python3 app.py.
أو إذا كنت تفضل، يمكنك أيضًا تشغيله عبر Docker أو Docker Compose.
docker run -p 5000:5000 erev0s/vampi:latest
[ملاحظة: إذا قمت بتشغيل Docker على إصدارات أحدث من نظام MacOS، استخدم -p 5001:5000 لتجنب التعارض مع خدمة AirPlay Receiver. بدلاً من ذلك، يمكنك تعطيل خدمة AirPlay Receiver في إعدادات النظام -> مشاركة.]
يحتوي docker-compose على نسختين، نسخة بالتكوين الآمن على المنفذ 5001 وأخرى غير آمنة على المنفذ 5002:
docker-compose up -d
قم بزيارة المسار /ui حيث يتم تشغيل واجهة برمجة التطبيقات وستكون واجهة Swagger UI متاحة لمساعدتك في البدء!
http://127.0.0.1:5000/ui/
إذا كنت ترغب في تغيير مهلة الرمز المميز الذي يتم إنشاؤه بعد تسجيل الدخول أو إذا كنت تريد تغيير البيئة بحيث لا تكون ضعيفة، فيمكنك استخدام عدة طرق اعتمادًا على كيفية تشغيل التطبيق.
python3 app.py، فكل ما عليك فعله هو تعديل المتغيرين alive و vuln المحددين داخل app.py نفسه. المتغير alive يقاس بالثواني، لذا إذا وضعت 100، فإن الرمز المميز ينتهي بعد 100 ثانية. المتغير vuln يشبه القيمة المنطقية، إذا قمت بتعيينه على 1 يكون التطبيق ضعيفًا، وإذا قمت بتعيينه على 0 لا يكون التطبيق ضعيفًا.docker run أو تعديل ملف Dockerfile وإعادة البناء.
مثال تشغيل Docker: docker run -d -e vulnerable=0 -e tokentimetolive=300 -p 5000:5000 erev0s/vampi:latest
vulnerable=1 على منفذ مختلف والتبديل بسهولة بين الاثنتين./createdb لملء قاعدة البيانات.| الإجراء | المسار | التفاصيل |
|---|
| GET | /createdb | ينشئ ويملأ قاعدة البيانات ببيانات وهمية |
| GET | / | الصفحة الرئيسية لفامبي |
| GET | /me | يعرض المستخدم المسجل دخوله |
| GET | /users/v1 | يعرض جميع المستخدمين بمعلومات أساسية |
| GET | /users/v1/_debug | يعرض جميع التفاصيل لجميع المستخدمين |
| POST | /users/v1/register | تسجيل مستخدم جديد |
| POST | /users/v1/login | تسجيل الدخول إلى فامبي |
| GET | /users/v1/{username} | يعرض المستخدم حسب اسم المستخدم |
| DELETE | /users/v1/{username} | حذف مستخدم حسب اسم المستخدم (المسؤولون فقط) |
| PUT | /users/v1/{username}/email | تحديث بريد إلكتروني لمستخدم واحد |
| PUT | /users/v1/{username}/password | تحديث كلمة مرور المستخدم |
| GET | /books/v1 | استرجاع جميع الكتب |
| POST | /books/v1 | إضافة كتاب جديد |
| GET | /books/v1/{book} | استرجاع كتاب حسب العنوان مع السر |
في ملف Dockerfile ستجد متغيرين بيئيين مضبوطين، ENV vulnerable=1 و ENV tokentimetolive=60. لا تتردد في تغييرهما قبل تشغيل أمر بناء Docker.