
CVE-2012-2122 - MySQL प्रमाणीकरण बाईपास
CVE-2012-2122 के लिए प्रूफ ऑफ कॉन्सेप्ट (PoC), एक महत्वपूर्ण प्रमाणीकरण बाईपास कमजोरी जो कमजोर MySQL और MariaDB सर्वरों को प्रभावित करती है।
अस्वीकरण
यह परियोजना केवल शैक्षिक उद्देश्यों, सुरक्षा अनुसंधान और अधिकृत पैठ परीक्षण के लिए है। इस सॉफ़्टवेयर का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण की आपको स्पष्ट अनुमति नहीं है।
CVE-2012-2122 MySQL के पासवर्ड सत्यापन लॉजिक में खोजी गई एक प्रमाणीकरण बाईपास कमजोरी है।
एक इंटीजर कास्टिंग/तुलना बग के कारण, प्रमाणीकरण गलत तरीके से सफल हो सकता है जब कोई अमान्य पासवर्ड तुलना कुछ शर्तों के तहत समान मूल्यांकन करती है।
एक वैध पासवर्ड के ज्ञान की आवश्यकता के बजाय, एक हमलावर तुलना बग ट्रिगर होने तक मनमाने पासवर्ड का उपयोग करके बार-बार प्रमाणीकरण का प्रयास कर सकता है।
सफलता की संभावना लगभग है:
इस अपेक्षाकृत उच्च संभावना के कारण, स्वचालित उपकरण आमतौर पर कुछ सौ लॉगिन प्रयासों के भीतर प्रमाणीकरण को बायपास कर सकते हैं।
| मीट्रिक | मान |
|---|---|
| CVE | CVE-2012-2122 |
| CVSS v2 | 7.5 (उच्च) |
| हमला वेक्टर | नेटवर्क |
| प्रमाणीकरण | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| प्रभाव | प्रमाणीकरण बाईपास |
यह कमजोरी कमजोर कंपाइलर ऑप्टिमाइज़ेशन के साथ संकलित MySQL बिल्ड को प्रभावित करती है, जिसमें निम्नलिखित संस्करण शामिल हैं:
यह समस्या मुख्य रूप से उन Linux वितरणों को प्रभावित करती थी जिनके कंपाइलर व्यवहार ने बग को उजागर किया।
इन संस्करणों की प्रत्येक स्थापना कमजोर नहीं है।
पासवर्ड सत्यापन के दौरान, MySQL आंतरिक रूप से memcmp() फ़ंक्शन का उपयोग करके दो हैश मानों की तुलना करता है।
सामान्य परिस्थितियों में:
memcmp(hash1, hash2)
वापसी:
0 जब समान होंकमजोरी इसलिए उत्पन्न हुई क्योंकि वापसी मान को एक साइन किए गए इंटीजर में संग्रहीत किया गया था और बाद में इस तरह रूपांतरित किया गया कि कुछ गैर-शून्य मानों को प्रमाणीकरण सफलता के रूप में व्याख्या करने की अनुमति मिली।
सरलीकृत तर्क:
if (memcmp(hash1, hash2) == 0)
{
// Login successful
}
कमजोर कंपाइलर व्यवहार के तहत, memcmp() से विशिष्ट वापसी मान गलत तरीके से तुलना को संतुष्ट कर सकते हैं।
परिणामस्वरूप, गलत पासवर्ड कभी-कभी सफलतापूर्वक प्रमाणित हो जाते थे।
एक हमलावर को केवल आवश्यकता है:
कोई पासवर्ड ज्ञान आवश्यक नहीं है।
हमलावर यादृच्छिक पासवर्ड का उपयोग करके लगातार लॉगिन प्रयास प्रस्तुत करता है।
अंततः, तुलना बग के कारण एक प्रमाणीकरण सफल हो जाता है।
विशिष्ट हमला प्रवाह:
प्रयास #1
↓
प्रमाणीकरण विफल
प्रयास #57
↓
प्रमाणीकरण विफल
प्रयास #141
↓
प्रमाणीकरण विफल
प्रयास #237
↓
प्रमाणीकरण सफल
औसत सफलता लगभग हर 256 प्रयासों में एक बार होती है।
सफल शोषण एक हमलावर को अनुमति देता है:
यदि प्रशासनिक क्रेडेंशियल को लक्षित किया जाता है, तो डेटाबेस सर्वर का पूर्ण नियंत्रण प्राप्त किया जा सकता है।
संकेतकों में शामिल हैं:
अत्यधिक असफल लॉगिन गतिविधि के लिए MySQL प्रमाणीकरण लॉग की समीक्षा करें।
अनुशंसित शमन एक पैच किए गए रिलीज़ में अपग्रेड करना है।
अतिरिक्त रक्षात्मक उपायों में शामिल हैं:
## उदाहरण उपयोग
```bash
python3 exploit.py -ip <target>
उदाहरण:
python3 exploit.py -ip 192.168.1.100
यह रिपॉजिटरी दर्शाती है कि प्रमाणीकरण तर्क में एक सूक्ष्म कार्यान्वयन बग पासवर्ड सत्यापन को पूरी तरह से कैसे कमजोर कर सकता है।
हालांकि यह कमजोरी एक दशक से अधिक पुरानी है, यह निम्नलिखित में एक महत्वपूर्ण केस स्टडी बनी हुई है: