Rails ActiveSupport Exploit (cve-2019-5420) POC (इसे CVE-2019-5418 के साथ जोड़ने पर विचार करें!)
CVE-2019-5418 के साथ बहुत अच्छा जोड़ता है!
POC स्क्रीनशॉट
🚨 चेतावनी
इस रिपॉजिटरी में एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) एक्सप्लॉइट है जो Ruby on Rails अनुप्रयोगों में ActiveSupport::MessageVerifier के दुरुपयोग के माध्यम से रिमोट कोड निष्पादन (RCE) प्रदर्शित करता है। जिम्मेदारी से उपयोग करें!
📌 अवलोकन
यह स्क्रिप्ट DeprecatedInstanceVariableProxy में लिपटे एक तैयार किए गए ERB ऑब्जेक्ट का लाभ उठाकर ActiveSupport डीसीरियलाइजेशन कमजोरियों का शोषण करती है। जब हस्ताक्षरित पेलोड एक संवेदनशील Rails अनुप्रयोग द्वारा डीसीरियलाइज्ड किया जाता है, तो मनमाना Ruby कोड निष्पादन होता है।
⚠️ अस्वीकरण
यह प्रोजेक्ट केवल शैक्षिक और शोध उद्देश्यों के लिए है। उन सिस्टमों के विरुद्ध अनधिकृत उपयोग जो आपके स्वामित्व में नहीं हैं, अवैध है और इसके गंभीर कानूनी परिणाम हो सकते हैं।
🛠️ यह कैसे काम करता है
1️⃣ एक गुप्त कुंजी उत्पन्न करें
स्क्रिप्ट ज्ञात Rails अनुप्रयोग नाम से MD5 हैशिंग का उपयोग करके एक `` प्राप्त करती है।
2️⃣ एक ActiveStorage गुप्त बनाएँ
हस्ताक्षर कुंजी उत्पन्न करने के लिए ActiveSupport::KeyGenerator का उपयोग करता है।
3️⃣ एक दुर्भावनापूर्ण ERB ऑब्जेक्ट बनाएँ
हमलावर-नियंत्रित कोड के साथ एक अप्रारंभीकृत `` ऑब्जेक्ट का निर्माण करता है।
4️⃣ DeprecatedInstanceVariableProxy में लपेटें
दुर्भावनापूर्ण ऑब्जेक्ट को एक हानिरहित दिखने वाले रैपर के भीतर छिपा देता है।
5️⃣ हस्ताक्षर करें और एक एक्सप्लॉइट टोकन उत्पन्न करें
पेलोड पर हस्ताक्षर करने के लिए ActiveSupport::MessageVerifier का उपयोग करता है, जिससे यह वैध प्रतीत होता है।
6️⃣ रिमोट कोड निष्पादन (RCE) प्राप्त करें
जब डीसीरियलाइज़ किया जाता है, तो Rails हमलावर के पेलोड को निष्पादित करता है, जिससे मनमाना कमांड निष्पादन संभव होता है।
🚀 उपयोग
root@kitploit:~
ruby POC.rb
स्क्रिप्ट एक हस्ताक्षरित एक्सप्लॉइट टोकन उत्पन्न करेगा, जिसका उपयोग एक संवेदनशील Rails अनुप्रयोग के विरुद्ध किया जा सकता है।
🛡️ शमन उपाय
हमलावरों को हस्ताक्षरित पेलोड उत्पन्न करने से रोकने के लिए ```` को घुमाएँ और सुरक्षित करें।
Rails को नवीनतम संस्करण में अपग्रेड करें (Rails 7+ में कड़े सीरियलाइज़ेशन तंत्र हैं)।
मनमाना ऑब्जेक्ट लोडिंग से बचने के लिए Marshal सीरियलाइज़ेशन के बजाय JSON सीरियलाइज़ेशन का उपयोग करें।
यह सुनिश्चित करने के लिए अनुप्रयोग डीसीरियलाइज़ेशन का ऑडिट करें कि अविश्वसनीय उपयोगकर्ता इनपुट डीसीरियलाइज़ नहीं किया जा रहा है।
📜 कानूनी अस्वीकरण
यह प्रोजेक्ट केवल शैक्षिक उद्देश्यों के लिए है। लेखक इस कोड के किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं है।