
जानबूझकर असुरक्षित बैंकिंग प्लेटफ़ॉर्म, जो यथार्थवादी व्यावहारिक लैब्स के माध्यम से वेब एप्लिकेशन, API, और AI/LLM सुरक्षा परीक्षण, सुरक्षित कोड समीक्षा, और DevSecOps एकीकरण का अभ्यास करने हेतु है।
वेब, APIs और LLMs की एप्लिकेशन सुरक्षा जांच, सुरक्षित कोड समीक्षा और CI/CD पाइपलाइनों में सुरक्षा लागू करने का अभ्यास करने के लिए एक जानबूझकर भेद्य वेब एप्लिकेशन।
⚠️ चेतावनी: यह एप्लिकेशन जानबूझकर असुरक्षित है और इसका उपयोग केवल शैक्षिक उद्देश्यों के लिए पृथक (isolated) वातावरण में किया जाना चाहिए।

यह प्रोजेक्ट एक साधारण बैंकिंग एप्लिकेशन है जिसमें कई सुरक्षा भेद्यताएँ अंतर्निर्मित हैं। इसे सुरक्षा इंजीनियरों, डेवलपर्स, इंटर्न्स, QA विश्लेषकों और DevSecOps अभ्यासकर्ताओं को इनके बारे में सीखने में मदद करने के लिए डिज़ाइन किया गया है:
USD, GBP, NGN, JPY, EUR, QAR, BTC, ETH)
प्रमाणीकरण और प्राधिकरण
डेटा सुरक्षा
लेनदेन भेद्यताएं
फ़ाइल संचालन
सत्र प्रबंधन
क्लाइंट और सर्वर-साइड दोष
वर्चुअल कार्ड भेद्यताएं
/graphql द्वारा विरासत में प्राप्त कमजोर JWT-आधारित प्रमाणीकरण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 एक स्वास्थ्य जांच (health check) उजागर करता है, और web प्रारंभ होने से पहले Postgres की तैयारी की प्रतीक्षा करता है।web फ्लास्क डेवलपमेंट सर्वर को 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" मिलता है:
python के बजाय py उपयोग करने का प्रयास करें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 फ़ाइल में क्रेडेंशियल जांचेंप्रमाणीकरण विफल:
सुनिश्चित करें कि .env में DB_PASSWORD आपके 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 का उपयोग करें
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>
/graphql के विरुद्ध स्कीमा इंट्रोस्पेक्शन चलाएंaccountNumber जैसे GraphQL रिज़ॉल्वर इनपुट के माध्यम से SQL इंजेक्शन का परीक्षण करें/api/virtual-cards/<card_id>/fund में exchange_rate में हेरफेर करेंसार्वजनिक मर्चेंट API जानबूझकर भेद्य डेमो ऐप्स, जैसे ecommerce लैब्स, को 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"}'
मर्चेंट API कुंजी का उपयोग करके ecommerce ऐप से उपयोगकर्ता के Vulnbank कार्ड से शुल्क लें:
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> से करेंAI चैट तक पहुंचें: डैशबोर्ड के निचले-दाएं कोने में नीले चैट बबल को देखें
नोट: चैट विजेट के दो मोड हैं:
AI तकनीक: वास्तविक LLM भेद्यताओं के लिए DeepSeek API का उपयोग करता है, यदि कोई API कुंजी कॉन्फ़िगर नहीं है तो मॉक फ़ॉलबैक के साथ।
प्रॉम्प्ट इंजेक्शन हमले
AI के माध्यम से सूचना प्रकटीकरण
AI के माध्यम से प्राधिकरण बायपास
AI सिस्टम का शोषण
संदर्भ इंजेक्शन और मोड परीक्षण
वास्तविक-विश्व प्रॉम्प्ट इंजेक्शन तकनीकें
योगदान का स्वागत है! बेझिझक:
इस लैब और मेरे निष्कर्षों के बारे में एक विस्तृत वॉकथ्रू यहाँ:
👇 DghostNinja द्वारा ब्लॉग पढ़ें
(https://dghostninja.github.io/posts/Vulnerable-Bank-API/)
👇 CyberPreacher द्वारा विस्तृत वॉकथ्रू
(https://medium.com/@cyberpreacher_/hacking-vulnerable-bank-api-extensive-d2a0d3bb209e)
केवल एथिकल हैकिंग। दायरे का सम्मान किया गया। कॉफ़ी पी गई। ☕
इस एप्लिकेशन में शैक्षिक उद्देश्यों के लिए जानबूझकर सुरक्षा भेद्यताएं शामिल हैं। ऐसा न करें:
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
सुरक्षा शिक्षा के लिए ❤️ के साथ निर्मित
बिल भुगतान भेद्यताएं
मर्चेंट भुगतान API भेद्यताएं
AI ग्राहक सहायता भेद्यताएं
या यह चलाएं:
createdb -U postgres -h localhost vulnerable_bank