
CVE-2020-24913 के लिए एक PoC, qcubed (3.1.1 सहित सभी संस्करण) में profile.php में strQuery पैरामीटर के माध्यम से एक SQL इंजेक्शन भेद्यता है, जो एक अनप्रमाणित हमलावर को तैयार POST अनुरोध के माध्यम से SQL कोड इंजेक्ट करके डेटाबेस तक पहुँचने की अनुमति देता है।
CVE-2020-24913 के लिए एक PoC, qcubed (3.1.1 सहित सभी संस्करणों) में profile.php के माध्यम से strQuery पैरामीटर में SQL इंजेक्शन भेद्यता, एक अप्रमाणित हमलावर को क्राफ्टेड POST अनुरोध के माध्यम से SQL कोड इंजेक्ट करके डेटाबेस तक पहुंचने की अनुमति देती है। यह PoC MySQL डेटाबेस का उपयोग करके किया गया है। हम stacked-queries-payload का उपयोग नहीं कर सके (जैसा कि postgres के साथ किया जा सकता है) और हमें इस भेद्यता का शोषण समय-आधारित (time-based) दृष्टिकोण से करना पड़ा।
"strProfileData" पैरामीटर में, हम निम्नलिखित पेलोड का उपयोग करते हैं (बिना एन्कोडिंग के): a:1:{i:0;a:3:{s:12:"objBacktrace";a:1:{s:4:"args";a:1:{i:0;s:3:"pwn";}}s:8:"strQuery";s:38:"(SELECT * FROM (SELECT(SLEEP(10)))CP);";s:11:"dblTimeInfo";s:1:"1";}}
असुरक्षित पैरामीटर "strProfileData" है। सर्वर को भेजने के लिए एक सफल अनुरोध इस प्रकार दिखता है। इस पैरामीटर में भेजी गई PHP सीरियलाइज़्ड ऐरे को base64 एन्कोडेड होना चाहिए।
निम्नलिखित छवियों में, strProfileData पैरामीटर को base64 डिकोड किया गया है ताकि पाठक इसे अधिक स्पष्ट रूप से देख सके, लेकिन जैसा कि ऊपर बताया गया है, इसे base64 एन्कोडेड भेजा जाना चाहिए।
निम्नलिखित अनुरोध में एक क्वेरी है जो सर्वर को 10 सेकंड के लिए सोने के लिए मजबूर करती है। हम SQL इंजेक्शन भेद्यता का शोषण डेटाबेस को एक SQL क्वेरी भेजकर करेंगे, जो उसे प्रतिक्रिया देने से पहले एक निर्दिष्ट समय (सेकंड में) प्रतीक्षा करने के लिए मजबूर करती है।
और डेटाबेस से डेटा प्राप्त करने के लिए, हम एक IF संरचना का उपयोग करने जा रहे हैं जो शर्त सत्य होने या न होने के आधार पर डेटाबेस को अधिक या कम समय के लिए सोने के लिए मजबूर करती है।
निम्नलिखित छवियों में हम डेटाबेस संस्करण (8.0.XX) के पहले अक्षर प्राप्त करते हैं।
हम SQL क्वेरी "SLEEP(5-(IF(SUBSTRING(@@version,X,1)='Y',2,5)))" का उपयोग करते हैं जो शर्त सत्य होने पर डेटाबेस को (5-2)=3 सेकंड के लिए सोने के लिए मजबूर करती है, या शर्त गलत होने पर डेटाबेस को (5-5)=0 सेकंड के लिए सोने के लिए मजबूर करती है। शर्त यह है कि स्थिति X में डेटाबेस संस्करण का अक्षर Y के बराबर है।

