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

अवलोकन
यह प्रोजेक्ट एक साधारण बैंकिंग एप्लिकेशन है जिसमें कई सुरक्षा भेद्यताएँ अंतर्निर्मित हैं। इसे सुरक्षा इंजीनियरों, डेवलपर्स, इंटर्न्स, QA विश्लेषकों और DevSecOps अभ्यासकर्ताओं को इनके बारे में सीखने में मदद करने के लिए डिज़ाइन किया गया है:
- सामान्य वेब एप्लिकेशन और API भेद्यताएँ
- AI/LLM भेद्यताएँ
- सुरक्षित कोडिंग प्रथाएँ
- सुरक्षा परीक्षण स्वचालन
- DevSecOps कार्यान्वयन
विशेषताएं और भेद्यताएं
मुख्य बैंकिंग सुविधाएं
- 🔐 उपयोगकर्ता प्रमाणीकरण और प्राधिकरण
- 💰 खाता शेष प्रबंधन
- 💸 धन हस्तांतरण
- 📝 ऋण अनुरोध
- 👤 प्रोफ़ाइल चित्र अपलोड
- 📊 लेनदेन इतिहास
- 📈 लेनदेन विश्लेषण डैशबोर्ड (GraphQL-आधारित)
- 🔑 पासवर्ड रीसेट प्रणाली (3-अंकीय PIN)
- 💳 मल्टी-करेंसी वर्चुअल कार्ड प्रबंधन
- 💱 अंतर्निहित मुद्रा रूपांतरण के साथ मुख्य USD शेष से वर्चुअल कार्ड फंडिंग (
USD, GBP, NGN, JPY, EUR, QAR, BTC, ETH)
- 🛒 जानबूझकर भेद्य ecommerce/demo एकीकरण के लिए सार्वजनिक मर्चेंट भुगतान API
- 📱 बिल भुगतान प्रणाली
- 🤖 AI ग्राहक सहायता एजेंट (DeepSeek API के साथ वास्तविक LLM / मॉक मोड)

लागू की गई भेद्यताएं
-
प्रमाणीकरण और प्राधिकरण
- लॉगिन में SQL इंजेक्शन
- कमजोर JWT कार्यान्वयन
- टूटा हुआ ऑब्जेक्ट-स्तरीय प्राधिकरण (BOLA)
- टूटा हुआ ऑब्जेक्ट प्रॉपर्टी-स्तरीय प्राधिकरण (BOPLA)
- मास असाइनमेंट और अत्यधिक डेटा एक्सपोज़र
- कमजोर पासवर्ड रीसेट तंत्र (3-अंकीय PIN)
- localStorage में संग्रहीत टोकन
- कोई सर्वर-साइड टोकन अमान्यकरण नहीं
- कोई सत्र समाप्ति नहीं
-
डेटा सुरक्षा
- सूचना प्रकटीकरण
- संवेदनशील डेटा एक्सपोज़र
- सादे पाठ (plaintext) में पासवर्ड भंडारण
- SQL इंजेक्शन बिंदु
- डीबग जानकारी का एक्सपोज़र
- विस्तृत त्रुटि संदेश उजागर होना
-
लेनदेन भेद्यताएं
- राशि सत्यापन का अभाव
- नकारात्मक राशि हस्तांतरण संभव
- कोई लेनदेन सीमा नहीं
- हस्तांतरण और शेष अपडेट में रेस कंडीशन
- लेनदेन इतिहास सूचना प्रकटीकरण
- प्राप्तकर्ता खातों पर कोई सत्यापन नहीं
-
फ़ाइल संचालन
- अप्रतिबंधित फ़ाइल अपलोड
- पाथ ट्रैवर्सल भेद्यताएं
- कोई फ़ाइल प्रकार सत्यापन नहीं
- डायरेक्टरी ट्रैवर्सल
- कोई फ़ाइल आकार सीमा नहीं
- असुरक्षित फ़ाइल नामकरण
- URL-आधारित प्रोफ़ाइल छवि आयात के माध्यम से सर्वर-साइड रिक्वेस्ट फोर्जरी (SSRF)
-
सत्र प्रबंधन
- टोकन भेद्यताएं
- कोई सत्र समाप्ति नहीं
- कमजोर गुप्त कुंजियाँ
- URLs में टोकन एक्सपोज़र
-
क्लाइंट और सर्वर-साइड दोष
- क्रॉस-साइट स्क्रिप्टिंग (XSS)
- क्रॉस-साइट रिक्वेस्ट फोर्जरी (CSRF)
- असुरक्षित प्रत्यक्ष ऑब्जेक्ट संदर्भ
- कोई रेट लिमिटिंग नहीं
-
वर्चुअल कार्ड भेद्यताएं
- कार्ड सीमा अपडेट में मास असाइनमेंट
- कार्ड फंडिंग विनिमय-दर हैंडलिंग में मास असाइनमेंट
- अनुमानित कार्ड नंबर जनरेशन
- कार्ड विवरण का सादे पाठ में भंडारण
- कार्ड सीमाओं पर कोई सत्यापन नहीं
- कार्ड संचालन में BOLA
- शेष अपडेट में रेस कंडीशन
- कार्ड विवरण सूचना प्रकटीकरण
- कोई लेनदेन सत्यापन नहीं
- कार्ड गतिविधि निगरानी का अभाव
- कार्ड फंडिंग के दौरान क्लाइंट-नियंत्रित मुद्रा रूपांतरण
-
बिल भुगतान भेद्यताएं
- भुगतान राशियों पर कोई सत्यापन नहीं
- बिलर क्वेरी में SQL इंजेक्शन
- भुगतान इतिहास में सूचना प्रकटीकरण
- अनुमानित संदर्भ संख्याएँ
- लेनदेन इतिहास एक्सपोज़र
- बिलर खातों पर कोई सत्यापन नहीं
- भुगतान प्रसंस्करण में रेस कंडीशन
- भुगतान इतिहास पहुंच में BOLA
- भुगतान सीमाओं का अभाव
-
मर्चेंट भुगतान API भेद्यताएं
- सादे पाठ में मर्चेंट पासवर्ड और API कुंजियाँ
- पंजीकरण और लॉगिन प्रतिक्रियाओं में API कुंजियाँ लौटाई जाती हैं
- मर्चेंट भुगतान APIs द्वारा कच्चे कार्ड नंबर/CVV स्वीकार किए जाते हैं
- SQL इंजेक्शन-प्रवण मर्चेंट और कार्ड लुकअप
- अनुपस्थित idempotency, रीप्ले सुरक्षा, भुगतान सीमाएँ और रेट लिमिटिंग
- मर्चेंट भुगतान लुकअप में ऑब्जेक्ट-स्तरीय प्राधिकरण अंतराल
- विस्तृत भुगतान अस्वीकृति कारण और डीबग डेटा एक्सपोज़र
- अनुमानित प्राधिकरण कोड जनरेशन
-
AI ग्राहक सहायता भेद्यताएं
- प्रॉम्प्ट इंजेक्शन (CWE-77)
- AI-आधारित सूचना प्रकटीकरण (CWE-200)
- AI संदर्भ में टूटा हुआ प्राधिकरण (CWE-862)
- AI सिस्टम सूचना एक्सपोज़र (CWE-209)
- AI प्रॉम्प्ट्स के लिए अपर्याप्त इनपुट सत्यापन (CWE-20)
- AI हेरफेर के माध्यम से सीधे डेटाबेस पहुंच
- AI भूमिका ओवरराइड हमले
- संदर्भ इंजेक्शन भेद्यताएं
- AI-सहायता प्राप्त अनधिकृत डेटा पहुंच
- उजागर AI सिस्टम प्रॉम्प्ट्स और कॉन्फ़िगरेशन
- GraphQL भेद्यताएं
- लेनदेन विश्लेषण एंडपॉइंट पर स्कीमा इंट्रोस्पेक्शन सक्षम
/graphql द्वारा विरासत में प्राप्त कमजोर JWT-आधारित प्रमाणीकरण
- GraphQL रिज़ॉल्वर क्वेरी निर्माण में SQL इंजेक्शन
- GraphQL गहराई / जटिलता नियंत्रण का अभाव
- कच्ची GraphQL त्रुटि प्रकटीकरण
- एडमिन-स्कोप्ड क्वेरीज़ के माध्यम से लेनदेन विश्लेषण एक्सपोज़र
स्थापना और सेटअप 🚀
पूर्वापेक्षाएँ
- Docker और Docker Compose (कंटेनराइज़्ड सेटअप के लिए)
- PostgreSQL (यदि लोकल चला रहे हैं)
- Python 3.9 या उच्चतर (लोकल सेटअप के लिए)
- Git
विकल्प 1: Docker का उपयोग करना (अनुशंसित)
Docker Compose का उपयोग करना (सबसे आसान)
- रिपॉजिटरी क्लोन करें:
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 रूट परीक्षण छोड़ दिया जाता है और स्टार्टअप-स्क्रिप्ट स्मोक टेस्ट फिर भी चलता है।
केवल Docker का उपयोग करना
- रिपॉजिटरी क्लोन करें:
git clone https://github.com/Commando-X/vuln-bank.git
cd vuln-bank
- Docker इमेज बनाएं:
docker build -t vuln-bank .
- कंटेनर चलाएं:
docker run -p 5000:5000 vuln-bank
विकल्प 2: लोकल इंस्टॉलेशन
पूर्वापेक्षाएँ
- Python 3.9 या उच्चतर
- PostgreSQL स्थापित और चालू
- pip (Python पैकेज मैनेजर)
- Git
चरण
- रिपॉजिटरी क्लोन करें:
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