
Django पैकेज में एक दोष पाया गया, जो SQL इंजेक्शन की ओर ले जाता है। यह दोष एक हमलावर को दुर्भावनापूर्ण SQL क्वेरी युक्त एक क्राफ्टेड डिक्शनरी का उपयोग करके डेटाबेस को पूरी तरह से समझौता करने की अनुमति देता है।
Django पैकेज में एक दोष पाया गया, जो SQL इंजेक्शन की ओर ले जाता है। यह दोष एक हमलावर को दुर्भावनापूर्ण SQL क्वेरी वाली क्राफ्टेड डिक्शनरी का उपयोग करके डेटाबेस को पूरी तरह से समझौता करने की अनुमति देता है।
आपको ऊपर कोड रिपॉजिटरी में CVE-2022-28346 पर विस्तृत विश्लेषण रिपोर्ट (PDF) मिलेगी।
CVE-2022-28346 एक गंभीर कमजोरी है जो Django के विभिन्न संस्करणों में पहचानी गई है, जो एक लोकप्रिय Python वेब फ्रेमवर्क है। यह कमजोरी विशेष रूप से Django संस्करण 2.2 (2.2.28 से पहले), 3.2 (3.2.13 से पहले), और 4.0 (4.0.4 से पहले) को प्रभावित करती है।
समस्या का मूल Django में QuerySet.annotate(), aggregate(), और extra() विधियों में निहित है। ये विधियाँ SQL इंजेक्शन हमलों के प्रति संवेदनशील हैं जब कॉलम उपनामों का उपयोग एक क्राफ्टेड डिक्शनरी (डिक्शनरी विस्तार के साथ) के साथ **kwargs के रूप में किया जाता है। SQL इंजेक्शन एक प्रकार का हमला है जो एक हमलावर को एप्लिकेशन द्वारा अपने डेटाबेस से किए जाने वाले क्वेरी में हस्तक्षेप करने की अनुमति देता है। इसका उपयोग उस डेटा को देखने के लिए किया जा सकता है जिसे वे सामान्य रूप से प्राप्त नहीं कर सकते, जिसमें अन्य उपयोगकर्ताओं से संबंधित डेटा, या कोई अन्य डेटा शामिल है जिसे एप्लिकेशन स्वयं एक्सेस कर सकता है। कुछ मामलों में, एक हमलावर इस डेटा को संशोधित या हटा सकता है, जिससे डेटा अखंडता प्रभावित होती है।
इस कमजोरी का व्यापक परीक्षण करने के लिए, सुनिश्चित करें कि आपकी हार्ड डिस्क पर पर्याप्त खाली स्थान हो। कमजोरी परीक्षण को सफलतापूर्वक करने के लिए न्यूनतम 1.2 GB आवश्यक है।
यदि आपको किसी भी चरण में कोई समस्या आती है या स्पष्टीकरण की आवश्यकता है, तो कृपया सहायता के लिए ईमेल के माध्यम से संपर्क करने में संकोच न करें:यदि आपके पास पहले से Docker स्थापित है, तो आप इस भाग को छोड़ सकते हैं और सीधे अगले निर्देश सेट पर जा सकते हैं।
इस कमजोरी का परीक्षण शुरू करने के लिए, Docker स्थापित करें:
अगले चरणों पर जाने से पहले सत्यापित करें कि Docker कार्यशील है।
अपने टर्मिनल में Docker इमेज प्राप्त करने के लिए निम्नलिखित कमांड चलाएँ जिसे हमने बनाया और DockerHub पर धकेला है:
sudo docker pull marouanekamal/cve-2022-28346:latest

और Docker इमेज को खींचने में समाप्त होने तक प्रतीक्षा करें। यदि आपको कोई समस्या आती है, तो यह आपके इंटरनेट कनेक्शन के कारण हो सकता है; कृपया सुनिश्चित करें कि आपके पास एक स्थिर और सक्रिय कनेक्शन है।
स्थापना समाप्त होने के बाद, निम्नलिखित कमांड चलाकर सत्यापित करें कि इमेज मौजूद है:
sudo docker images

अब आप निम्नलिखित कमांड का उपयोग करके Docker इमेज चला सकते हैं:
sudo docker run -p 8000:8000 --name my_cve_container marouanekamal/cve-2022-28346:latest

अब सर्वर चल रहा है और हम इस CVE का शोषण कर सकते हैं ;)
Docker इमेज चलाने के बाद आप URL तक पहुँच की जाँच करने के लिए निम्नलिखित लिंक में प्रवेश कर सकते हैं:
http://0.0.0.0:8000/

ok शब्द प्रदर्शित होता है, जिसका अर्थ है कि URL सुलभ है और सब कुछ ठीक काम कर रहा है!
अब हम SQL इंजेक्शन का उपयोग करके इस कमजोरी पर हमला करते हैं। ऐसा करने के लिए निम्नलिखित URL टाइप करें:
http://0.0.0.0:8000/demo?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" --

हम सर्वर द्वारा उपयोग किए जाने वाले SQLite के संस्करण का निर्धारण करने में सफल रहे ;)