
منصة مصرفية ضعيفة عمدًا لممارسة اختبار أمان تطبيقات الويب وواجهات برمجة التطبيقات (API) والذكاء الاصطناعي/نماذج اللغة الكبيرة (LLM)، ومراجعة أمان الكود، وتكامل DevSecOps من خلال مختبرات عملية واقعية.
تطبيق ويب قابل للاختراق عن قصد لممارسة اختبار أمان التطبيقات للويب وواجهات برمجة التطبيقات (APIs) ونماذج اللغة الكبيرة (LLMs)، ومراجعة الكود الأمنية، وتنفيذ الأمان في خطوط CI/CD.
⚠️ تحذير: هذا التطبيق قابل للاختراق عن قصد ويجب استخدامه للأغراض التعليمية فقط في بيئات معزولة.

هذا المشروع هو تطبيق مصرفي بسيط يحتوي على ثغرات أمنية متعددة مدمجة. صُمم لمساعدة مهندسي الأمن والمطورين والمتدربين ومحللي ضمان الجودة (QA) وممارسي DevSecOps على التعرّف على:
USD, GBP, NGN, JPY, EUR, QAR, BTC, ETH)
المصادقة والتفويض
أمان البيانات
ثغرات المعاملات
عمليات الملفات
إدارة الجلسات
عيوب جانب العميل وجانب الخادم
ثغرات البطاقات الافتراضية
ثغرات دفع الفواتير
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
docker-compose up -d --build
سيكون التطبيق متاحًا على http://localhost:5000
يتضمن إعداد Docker بعض الضمانات التشغيلية حتى يتمكن التطبيق من التعافي دون تدخل يدوي عبر SSH:
web و db خيار restart: unless-stopped، لذا يعيد Docker تشغيلهما تلقائيًا إذا توقفت العملية.db فحصًا صحيًا، وتنتظر web جاهزية Postgres قبل البدء.web خادم تطوير Flask مع debug=True (عن قصد — للحفاظ على سيناريوهات التدريب التي تستهدف مصحح أخطاء Werkzeug).web نقطة GET /healthz حتى تتمكن الحاوية من الإبلاغ عما إذا كان التطبيق وقاعدة البيانات قابلين للاستخدام فعليًا.يحافظ ذلك على سلوك التطبيق القابل للاختراق عن قصد مع جعل دورة حياة الحاوية أكثر مرونة.
يمكنك التحقق من إعدادات التشغيل المحلية دون تشغيل حاويات حقيقية:
python3 -m unittest discover -s tests -v
يتحقق هذا من سلوك نقطة نهاية /healthz ويتحقق من أن start.sh ينتظر قاعدة البيانات ثم يشغّل تطبيق Flask.
إذا لم تكن تبعيات تطبيق Flask مثبتة في بيئة Python الحالية لديك، فسيتم تخطي اختبار مسار /healthz وسيستمر اختبار سكربت بدء التشغيل في العمل.
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
docker build -t vuln-bank .
docker run -p 5000:5000 vuln-bank
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
# On Windows
python -m venv venv
venv\Scripts\activate
# On Linux/Mac
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# On Windows
mkdir static\uploads
# On Linux/Mac
mkdir -p static/uploads
تعديل ملف .env:
تشغيل التطبيق:
# On Windows
python app.py
# On Linux/Mac
python3 app.py
يتم تضمين ملف .env عن قصد في هذا المستودع لتسهيل الإعداد للأغراض التعليمية. في تطبيق حقيقي، يجب ألا تضع ملفات .env أبدًا في نظام التحكم بالإصدارات.
متغيرات البيئة الحالية:
DB_NAME=vulnerable_bank
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=db # Change to 'localhost' for local installation
DB_PORT=5432
يستخدم التطبيق PostgreSQL. ستتم تهيئة قاعدة البيانات تلقائيًا عند تشغيل التطبيق لأول مرة، مما ينشئ:
http://localhost:5000http://localhost:5000/api/docshttp://localhost:5000/graphqlإذا ظهرت لك رسالة "python not found":
py بدلاً من pythonمشكلات الأذونات مع مجلد uploads:
رُفض الإذن عند إنشاء الدلائل:
sudo mkdir -p static/uploads
sudo chown -R $USER:$USER static/uploads
المنفذ 5000 قيد الاستخدام بالفعل:
# Kill process using port 5000
sudo lsof -i:5000
sudo kill <PID>
رفض الاتصال:
.envفشل المصادقة:
تأكد من أن DB_PASSWORD في ملف .env يطابق كلمة مرور مستخدم Postgres لديك.
أو أعد تعيين مستخدم postgres باستخدام:
ALTER ROLE postgres WITH PASSWORD 'your_password';
أخطاء التثبيت:
إذا واجهت أي أخطاء في PostgreSQL، فثبّته عبر Chocolatey واضبط كلمة المرور على postgres:
choco install postgresql --version=17.4.0 -y
# Use the generated password, or immediately reset it:
& 'C:\Program Files\PostgreSQL\17\bin\psql.exe' -U postgres -c "ALTER ROLE postgres WITH PASSWORD 'postgres';"
قاعدة البيانات غير موجودة:
أنشئها يدويًا باستخدام:
CREATE DATABASE vulnerable_bank;
أو نفّذ:
/upload_profile_picture_url مع عنوان URL داخلي أو مُتحكم فيه
http://127.0.0.1:5000/internal/secrethttp://127.0.0.1:5000/internal/config.jsonhttp://127.0.0.1:5000/latest/meta-data/ (ومسارات فرعية مثل .../iam/security-credentials/)https://webhook.site/<your-id> ولاحظ الطلب الواردcurl -s -X POST http://localhost:5000/upload_profile_picture_url \
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json" \
-d '{"image_url":"http://127.0.0.1:5000/internal/secret"}'
# -> Copy the returned file_path and GET http://localhost:5000/<file_path>
/graphqlaccountNumberexchange_rate في /api/virtual-cards/<card_id>/fund لإيداع مبلغ زائد في البطاقة أثناء تحويل الدولار الأمريكيتتيح واجهة برمجة تطبيقات التجار العامة لتطبيقات العروض التوضيحية القابلة للاختراق عن قصد، مثل مختبرات التجارة الإلكترونية، قبول المدفوعات من البطاقات الافتراضية الخاصة بـ Vulnbank.
سجّل أو سجّل الدخول كمستخدم Vulnbank عادي.
أنشئ بطاقة افتراضية ومولها من الرصيد الرئيسي للمستخدم.
سجّل تكامل تاجر من http://localhost:5000/merchant/register أو عبر API:
curl -s -X POST http://localhost:5000/api/v1/merchants/register \
-H "Content-Type: application/json" \
-d '{"name":"Demo Ecommerce","email":"[email protected]","password":"password123"}'
قم بفرض الرسوم على بطاقة مستخدم Vulnbank من تطبيق التجارة الإلكترونية باستخدام مفتاح API للتاجر:
curl -s -X POST http://localhost:5000/api/v1/payments/charge \
-H "X-Merchant-Api-Key: <MERCHANT_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"amount": 49.99,
"currency": "USD",
"card_number": "4111111111111111",
"cvv": "123",
"expiry_date": "12/28",
"merchant_order_id": "ORDER-1001",
"description": "Demo ecommerce checkout"
}'
اعرض لوحة تحكم التاجر على http://localhost:5000/merchant/dashboard، أو استرجع تفاصيل الدفع باستخدام مفتاح API أو JWT التاجر الضعيف:
curl -s http://localhost:5000/api/v1/payments/<payment_id> \
-H "Authorization: Bearer <MERCHANT_JWT>"
/api/v1/payments/merchant_id/<merchant_id>/api/v1/payments و /api/v1/payments/merchant_id/<merchant_id>الوصول إلى محادثة الذكاء الاصطناعي: ابحث عن فقاعة المحادثة الزرقاء في الزاوية السفلية اليمنى من لوحة التحكم
ملاحظة: لأداة المحادثة وضعان:
تقنية الذكاء الاصطناعي: يستخدم DeepSeek API لإظهار ثغرات نماذج اللغة الكبيرة الحقيقية، مع رد احتياطي بالمحاكاة إذا لم يتم تكوين مفتاح API.
هجمات حقن التعليمات
كشف المعلومات عبر الذكاء الاصطناعي
تجاوز التفويض عبر الذكاء الاصطناعي
استغلال نظام الذكاء الاصطناعي
حقن السياق واختبار الأوضاع
تقنيات حقن التعليمات الواقعية
نرحب بالمساهمات! لا تتردد في:
شرح مفصّل حول هذا المختبر ونتائجي هنا:
👇 اقرأ المقال بقلم DghostNinja
(https://dghostninja.github.io/posts/Vulnerable-Bank-API/)
👇 شرح مفصّل بقلم CyberPreacher
(https://medium.com/@cyberpreacher_/hacking-vulnerable-bank-api-extensive-d2a0d3bb209e)
قرصنة أخلاقية فقط. النطاق ملتزم به. قهوة مستهلكة. ☕
يحتوي هذا التطبيق على ثغرات أمنية مقصودة لأغراض تعليمية. لا تقم بـ:
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.
صُنع بـ ❤️ من أجل التعليم الأمني
ثغرات واجهة برمجة تطبيقات دفع التجار
ثغرات دعم العملاء بالذكاء الاصطناعي
ثغرات GraphQL
/graphqlcreatedb -U postgres -h localhost vulnerable_bank