
CVE-2026-27483 के विरुद्ध अनुसंधान और बचाव के लिए एक कंटेनरीकृत एंटरप्राइज़-शैली प्रयोगशाला।
CVE-2026-27483 (MindsDB पाथ ट्रैवर्सल → RCE) को सीखने, परीक्षण करने और उससे बचाव के लिए एक संपूर्ण, यथार्थवादी, एंटरप्राइज़-शैली का Docker-आधारित लैब। यह रिपॉज़िटरी एक तैनात करने योग्य लैब टोपोलॉजी, कॉन्फ़िगरेशन, न्यूनतम कंटेनर इमेज, डिटेक्शन नियम और सहायक स्क्रिप्ट प्रदान करती है ताकि आप खोज, शोषण (सैनिटाइज़्ड) और बचाव का अभ्यास करने के लिए सुरक्षित रूप से एक पृथक वातावरण तैयार कर सकें।
महत्वपूर्ण: यह लैब जानबूझकर शैक्षिक उद्देश्यों के लिए एक भेद्य MindsDB संस्करण शामिल करता है। केवल पृथक, एयर-गैप्ड वातावरण में चलाएं और इसे कभी भी सार्वजनिक नेटवर्क पर उजागर न करें।
Internet (Attacker)
↓
Reverse Proxy (nginx)
↓
┌─────────────────────────────────┐
│ MindsDB (Vulnerable) │ Port 47334
│ - Vulnerable to CVE-2026-27483 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ PostgreSQL Database │ Port 5432 (internal)
│ - Stores MindsDB data │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ ELK Stack (Logging) │
│ - Elasticsearch, Logstash │ Ports 9200, 5000
│ - Kibana Dashboard │ Port 5601
└─────────────────────────────────┘
सेवाएँ एक समर्पित Docker ब्रिज नेटवर्क (डिफ़ॉल्ट रूप से 172.20.0.0/16) पर जुड़ी हुई हैं। पृथक MindsDB सेवा के विरुद्ध नियंत्रित शोषण प्रयास चलाने के लिए एक हमलावर कंटेनर शामिल है।
डिफ़ॉल्ट रूप से Postgres को सार्वजनिक इंटरनेट पर उजागर करने का इरादा नहीं है। कंपोज़ फ़ाइल स्थानीय लैब उपयोग के लिए आंतरिक सेवाओं को मैप करती है।
पूर्वापेक्षाएँ:
git clone https://github.com/nabhan-mohy/cve-2026-27483-lab.git
cd cve-2026-27483-lab
cp .env.example .env
# .env खोलें और DB_PASSWORD और अन्य मानों की पुष्टि करें
महत्वपूर्ण: सुनिश्चित करें कि .env में DB_PASSWORD उस पासवर्ड से मेल खाता है जिसकी कंपोज़ फ़ाइल अपेक्षा करती है। docker-compose.yml में एक डिफ़ॉल्ट है (${DB_PASSWORD:-P@ssw0rd123!})। या तो .env में DB_PASSWORD=P@ssw0rd123! सेट करें या अपने पसंदीदा पासवर्ड का उपयोग करने के लिए docker-compose.yml संपादित करें। यदि वे मेल नहीं खाते हैं, तो MindsDB Postgres से कनेक्ट करने में विफल हो जाएगा और सेवाएँ सही ढंग से प्रारंभ नहीं होंगी।
(वैकल्पिक) व्यवहार ट्यून करने के लिए .env संपादित करें (सुविधाएँ सक्षम/अक्षम करें, हमलावर लिसनर IP सेट करें, आदि)।
लैब प्रारंभ करें (पूर्ण मोड):
docker compose up -d --build
curl http://localhost:47334/api/statushttp://localhost:5601http://localhost:8080docker compose down
वॉल्यूम हटाने के लिए (विनाशकारी):
docker compose down -v
README न्यूनतम और मॉनिटरिंग प्रोफ़ाइल को संदर्भित करता है। इन्हें समर्थन देने के लिए आप या तो:
docker-compose.yml में profiles: कुंजियों का उपयोग करके सेवाओं को minimal और monitoring प्रोफ़ाइल में अलग करें, याdocker-compose.minimal.yml जैसी एक ओवरराइड कंपोज़ फ़ाइल बनाएं जो कम-संसाधन परीक्षणों के लिए भारी घटकों (Elasticsearch/Kibana/Wazuh) को अक्षम करती है।एक सुझाया गया न्यूनतम परीक्षण दृष्टिकोण Elasticsearch/Kibana/Wazuh को टिप्पणी करना या छोड़ना है और केवल चलाना है: mindsdb, postgres, nginx-proxy, और attacker।
रिवर्स प्रॉक्सी (nginx-proxy): बाहरी-मुखी एंडपॉइंट के रूप में कार्य करता है और हमलावर ट्रैफ़िक को भेद्य MindsDB सेवा तक रूट करता है। प्रॉक्सी त्वरित जाँच के लिए एक सरल डैशबोर्ड पोर्ट (8080) भी प्रदान करता है।
MindsDB (भेद्य इमेज): README में संदर्भित भेद्य रिलीज़ से पैकेज किया गया। यह Postgres में डेटा संग्रहीत करता है और API एंडपॉइंट प्रदान करता है जो पुराने संस्करणों में जानबूझकर भेद्य हैं।
Postgres: MindsDB कॉन्फ़िगरेशन और आर्टिफैक्ट संग्रहीत करता है। प्रारंभिकरण SQL और सीड डेटा configs/postgres/*.sql में प्रदान किए गए हैं।
ELK स्टैक (Elasticsearch, Logstash, Kibana): प्रॉक्सी और एप्लिकेशन से लॉग एकत्र करता है ताकि आप डिटेक्शन नियम और डैशबोर्ड बना सकें।
Wazuh (वैकल्पिक): सुरक्षा मॉनिटरिंग एजेंट और प्रबंधक। एकीकरण प्रदर्शित करने के लिए प्लेसहोल्डर के रूप में शामिल; कॉन्फ़िगरेशन में TLS प्रमाणपत्र और क्रेडेंशियल प्लेसहोल्डर हैं और पूर्ण कार्यक्षमता के लिए प्रावधानित किए जाने चाहिए।
हमलावर कंटेनर: उपयोगिताओं (curl, netcat, python) और माउंटेड exploits/ फ़ोल्डर वाला एक वातावरण जो चुनौती स्क्रिप्ट को उसी Docker नेटवर्क के अंदर से चलाने के लिए है (यदि चाहें तो आपके होस्ट नेटवर्क से पृथक)।
बैकअप सेवा: यथार्थवादी एंटरप्राइज़ वर्कफ़्लो प्रदर्शित करने के लिए नमूना कंटेनर (Postgres से DB डंप खींचने वाले बैकअप)।
docker compose exec -it attacker /bin/bash), प्रॉक्सी (पोर्ट 80/8080) और MindsDB API (47334) के विरुद्ध टोही चलाएं।exploits/ और docs/challenges/ के अंतर्गत जोड़ सकते हैं।उदाहरण: हमलावर कंटेनर से बुनियादी टोही चलाएं
# हमलावर कंटेनर में प्रवेश करें
docker compose exec -it attacker /bin/bash
# नेटवर्क स्कैन करें या एंडपॉइंट्स को curl करें
curl -v http://nginx-proxy:80/
curl -v http://mindsdb:47334/api/status
एक स्मोक टेस्ट स्क्रिप्ट scripts/smoke_test.sh पर प्रदान की गई है (यदि मौजूद है)। यह निम्नलिखित जाँच करती है:
/api/status के प्रतिक्रिया देने की प्रतीक्षा करता हैpg_isready के साथ Postgres तत्परता सत्यापित करता हैइसे स्थानीय रूप से चलाएं:
chmod +x scripts/smoke_test.sh
./scripts/smoke_test.sh
यदि स्मोक टेस्ट विफल हो जाता है, तो लॉग को smoke_compose_logs.txt में एकत्र करें और डिबगिंग के लिए साझा करें:
docker compose logs --no-color > smoke_compose_logs.txt