
GitLab खाता अधिग्रहण के लिए CVE-2023-7028 के माध्यम से शोषण, जो पासवर्ड रीसेट बाईपास का प्रदर्शन करता है, जिसमें रीसेट टोकन प्राप्त करने के लिए हमलावर का ईमेल इंजेक्ट किया जाता है।
GitLab एक व्यापक रूप से उपयोग किया जाने वाला वेब-आधारित रिपॉजिटरी प्रबंधक है, जो सॉफ्टवेयर विकास परियोजनाओं में स्रोत कोड प्रबंधन, एकीकरण, रखरखाव और सहयोग के लिए एक व्यापक मंच प्रदान करता है।CVE-2023-7028 एक कमजोरी है जो हमलावर को reset password फॉर्म के माध्यम से उपयोगकर्ता खाते (Account TakeOver) पर कब्जा करने की अनुमति देती है।संस्करणों में मौजूद है:
reset password फॉर्म में स्थित है, विशेष रूप से GitLab के API endpoint POST /users/password में। हमलावर email address फ़ील्ड में कमजोरी का फायदा उठाकर गलत प्रारूप की जांच को बायपास करता है, जिससे हमलावर अपना ईमेल डाल सकता है और GitLab हमलावर के ईमेल पर भेज देता है।reset tokenGitLab द्वारा प्रदान किए गए कोड खंड के आधार पर, हम निम्नलिखित देख सकते हैं:

Reset Password अनुरोध को संभालने वाला भाग फ़ाइल spec/controllers/passwords_controller_spec.rb में स्थित है, जो इनपुट से कई ईमेल दर्ज करने की अनुमति देता है, लेकिन यह पुष्टि करने के लिए कोई ईमेल सत्यापन तंत्र नहीं है कि यह उपयोगकर्ता का ईमेल है।
सर्वर केवल फॉर्म सबमिट में हमलावर से authenticity_token (CSRF से बचाव के लिए छिपा हुआ टोकन) की मांग करता है ताकि reset passwd अनुरोध भेजा जा सके।

→ हम अपना ईमेल डाल सकते हैं ताकि पीड़ित के ईमेल का reset passwd reset token प्राप्त कर सकें, और इस प्रकार उपयोगकर्ता खाते पर कब्जा कर सकें।
reset password अनुरोध को कैप्चर करने पर हमें निम्नलिखित मिलता है:

authenticity_token शामिल है जिसका उपयोग CSRF से बचाव के लिए किया जाता है, और जिस उपयोगकर्ता का पासवर्ड रीसेट किया जाना है उसका ईमेल नाम user[email] वेरिएबल में रखा गया है।निम्नलिखित payload के साथ हमलावर का ईमेल जोड़ें &user[email][]=victim_email&user[email][]=attacker_email और अनुरोध भेजें:

→ हमलावर के ईमेल की जांच करने पर पता चलता है कि reset password टोकन भेज दिया गया है और पासवर्ड बदलने के लिए एक्सेस किया जा सकता है।

