
Ruoyi v4.8.3 के बैकएंड में एक SQL इंजेक्शन भेद्यता है।
filterKeyword SQL इंजेक्शन बायपासप्राधिकरण आवश्यक / केवल अधिकृत परीक्षण यह रिपॉजिटरी केवल सुरक्षा अनुसंधान और अधिकृत परीक्षण के लिए है। इसे बिना स्पष्ट अनुमति के सिस्टम पर उपयोग न करें। यह रिपॉजिटरी केवल सुरक्षा अनुसंधान और स्पष्ट रूप से अधिकृत परीक्षण के लिए है। कृपया अनधिकृत सिस्टम पर उपयोग न करें।
RuoYi v4.8.3 के कोड जनरेशन मॉड्यूल का /tool/gen/createTable एंडपॉइंट बैकएंड उपयोगकर्ताओं को टेबल बनाने वाला SQL सबमिट करने की अनुमति देता है। एंडपॉइंट SqlUtil.filterKeyword() को कॉल करता है जो कीवर्ड ब्लैकलिस्ट फ़िल्टर करता है, लेकिन कार्यान्वयन पहले इनपुट से सभी सफेद स्थान हटाता है, फिर ऐसे कीवर्ड से मिलान करता है जिनमें पिछले स्थान शामिल हैं (जैसे select , insert , drop ), जिससे संबंधित नियम मैच नहीं हो पाते।
CREATE TABLE ... AS SELECT ... (CTAS) स्टेटमेंट का उपयोग करके, Druid MySqlCreateTableStatement प्रकार जांच पास करने के साथ ही SELECT निष्पादित किया जा सकता है। वैध बैकएंड सत्र वाला हमलावर इस आधार पर बूलियन ब्लाइंड SQL इंजेक्शन बना सकता है, डेटाबेस से संवेदनशील जानकारी पढ़ सकता है और डेटा तालिकाएँ बना सकता है।
JSESSIONID है।सत्यापन स्क्रिप्ट sys_user तालिका में admin उपयोगकर्ता के पासवर्ड हैश और सॉल्ट निकालने के लिए निम्नलिखित तर्क का उपयोग करती है:
login_name, password और salt फ़ील्ड कॉपी करें।WHERE में SUBSTRING() शर्त जोड़ें।/tool/gen/list के माध्यम से क्वेरी किया जा सकता है।requests, urllib3निर्भरताएँ स्थापित करें:
python -m pip install requests urllib3
exp.py खोलें और फ़ाइल के शीर्ष पर कॉन्फ़िगरेशन अनुभाग में निम्नलिखित दो पंक्तियों को बदलें:
TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"
जहाँ:
TARGET: परीक्षण करने वाले RuoYi URL से बदलें, उदाहरण http://127.0.0.1:8080।COOKIE: बैकएंड में लॉग इन करने के बाद प्राप्त वैध JSESSIONID सत्र से बदलें।बदलने के बाद सीधे चलाएं:
python exp.py
स्क्रिप्ट लक्ष्य डेटाबेस में मध्यवर्ती तालिका और बड़ी संख्या में बूलियन परीक्षण तालिकाएँ बनाएगी। कृपया केवल अलग या अधिकृत वातावरण में उपयोग करें, और परीक्षण पूरा होने के बाद डेटाबेस प्रशासक को संबंधित तालिकाओं को साफ करवाएं।
exp.png स्थानीय अधिकृत वातावरण में सफल सत्यापन का स्क्रीनशॉट है:

filterKeyword() के सामान्यीकरण और मिलान तर्क को सुधारें, लेकिन इसे एकमात्र सुरक्षा उपाय न मानें।कोड-जनरेशन मॉड्यूल का /tool/gen/createTable एंडपॉइंट RuoYi v4.8.3 में प्रमाणित बैकएंड उपयोगकर्ताओं से टेबल-निर्माण SQL स्वीकार करता है। एंडपॉइंट SqlUtil.filterKeyword() को कॉल करता है ताकि खतरनाक SQL कीवर्ड को अवरुद्ध किया जा सके। हालाँकि, कार्यान्वयन ब्लैकलिस्ट प्रविष्टियों (जिनमें पिछले स्थान होते हैं, जैसे select , insert , और drop ) की जाँच करने से पहले इनपुट से सभी सफेद स्थान हटा देता है। इसलिए वे प्रविष्टियाँ सामान्यीकृत इनपुट से मेल नहीं खा पातीं।
एक CREATE TABLE ... AS SELECT ... (CTAS) स्टेटमेंट Druid MySqlCreateTableStatement प्रकार की जाँच पास कर सकता है, फिर भी SELECT निष्पादित करता है। वैध बैकएंड सत्र वाला हमलावर इस व्यवहार का उपयोग बूलियन-आधारित ब्लाइंड SQL इंजेक्शन, संवेदनशील-डेटा निष्कर्षण और तालिका निर्माण के लिए कर सकता है।
JSESSIONID है।स्क्रिप्ट निम्नलिखित ओरेकल का उपयोग करके sys_user से admin का पासवर्ड हैश और सॉल्ट पुनर्प्राप्त करती है:
login_name, password और salt युक्त एक मध्यवर्ती तालिका बनाएं।SUBSTRING() शर्त के साथ एक परीक्षण तालिका बनाएं।/tool/gen/list के माध्यम से दृश्यमान हो जाती है।requests, urllib3निर्भरताएँ स्थापित करें:
python -m pip install requests urllib3
exp.py खोलें और फ़ाइल के शीर्ष के पास कॉन्फ़िगरेशन अनुभाग में निम्नलिखित दो पंक्तियों को बदलें:
TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"
जहाँ:
TARGET परीक्षण करने वाला RuoYi आधार URL है, उदाहरण http://127.0.0.1:8080।COOKIE एक वैध प्रमाणित बैकएंड JSESSIONID सत्र है।URL और सत्र बदलने के बाद, चलाएं:
python exp.py
स्क्रिप्ट लक्ष्य डेटाबेस में एक मध्यवर्ती तालिका और कई बूलियन-परीक्षण तालिकाएँ बनाती है। इसका उपयोग केवल एक अलग या स्पष्ट रूप से अधिकृत वातावरण में करें, और परीक्षण के बाद डेटाबेस प्रशासक से उत्पन्न तालिकाओं को हटवाएं।
exp.png एक अधिकृत स्थानीय वातावरण में सफल सत्यापन दिखाता है:

filterKeyword() में सामान्यीकरण और मिलान तर्क को सही करें, लेकिन इसे एकमात्र सुरक्षा नियंत्रण न मानें।exp.py - सत्यापन स्क्रिप्ट / सत्यापन स्क्रिप्टexp.png - सफल सत्यापन स्क्रीनशॉट / सत्यापन सफल स्क्रीनशॉटREADME.md - द्विभाषी भेद्यता दस्तावेज़ीकरण / चीनी-अंग्रेज़ी द्विभाषी भेद्यता विवरण