
AgentDVR 5.1.6.0 के लिए CVE-2024-22515 मनमाना फ़ाइल अपलोड और CVE-2024-22514 दूरस्थ कोड निष्पादन (प्रमाणित)
CVE-2024-22515 मनमाना फ़ाइल अपलोड और CVE-2024-22514 रिमोट कोड निष्पादन — AgentDVR 5.1.6.0 के लिए (प्रमाणित)
(पुराने संस्करण भी प्रभावित होने की संभावना है)
https://github.com/Orange-418/CVE-2024-22514-Remote-Code-Execution
https://github.com/Orange-418/CVE-2024-22515-File-Upload-Vulnerability
https://www.ispyconnect.com/docs/agent/about
https://www.youtube.com/watch?v=RXmoXERWVk8
4.7.3.0 और 5.1.6.0 पर परीक्षण किया गया। इनके बीच के और पुराने संस्करण भी प्रभावित होने की संभावना है। Windows x64, Linux x64 और Docker के लिए इंस्टॉल पर परीक्षण किया गया। यह ध्यान देने योग्य है कि Windows के लिए शोषण पथ थोड़ा भिन्न होता है। bash को कॉल करने के बजाय, आप सीधे किसी exe फ़ाइल को कॉल कर सकते हैं, जैसे "/AgentDVR/sounds/payload.exe"।
AgentDVR संस्करण 5.1.6.0 में दो कमज़ोरियाँ हैं: एक मनमाना फ़ाइल अपलोड कमज़ोरी, और एक मनमाना फ़ाइल निष्पादन कमज़ोरी। ये दोनों मिलकर किसी भी अपलोड की गई मनमानी फ़ाइल (जिसमें दुर्भावनापूर्ण पेलोड भी शामिल हैं) के निष्पादन को सक्षम बनाती हैं। इसके परिणामस्वरूप, AgentDVR सर्वर के लिए वैध क्रेडेंशियल रखने वाले व्यक्तियों द्वारा संभावित RCE (रिमोट कोड निष्पादन) हो सकता है।
प्रोग्राम की प्रकृति के कारण, जो बड़े पैमाने पर WebRTC का उपयोग करता है, मैंने PoC स्क्रिप्ट नहीं बनाई। हालाँकि, मैनुअल प्रक्रिया बहुत कम जटिलता वाली है। अगर कोई PoC स्क्रिप्ट बनाकर मुझसे संपर्क करता है, तो मैं उसे यहाँ लिंक कर दूँगा।
सबसे पहले, डैशबोर्ड में लॉग इन करने के बाद, एक नया डिवाइस जोड़ें। डिफ़ॉल्ट सेटिंग्स के साथ केवल एक "Dummy" डिवाइस बनाएँ।

डिवाइस पर, फोटो लेने पर कोई कार्य (task) ट्रिगर करने के लिए एक एक्शन जोड़ें। फिर, एक कार्य जोड़ें, और "Execute Command" चुनें, और किस कमांड को ट्रिगर करना है इसके ड्रॉपडाउन में कोई भी "File" चुनें।

अब, अपना पेलोड तैयार करें। आप इस रिपॉज़िटरी में मौजूद "payload.sh" फ़ाइल को संशोधित करके उपयोग कर सकते हैं। यह एक बहुत ही सरल रिवर्स शेल स्क्रिप्ट है।
तैयार होने के बाद, सर्वर मेनू पर वापस जाएँ, और "File Upload" चुनें। "Audio" चुनें, और फ़ाइल को ब्राउज़ करना शुरू करें, लेकिन फ़ाइल चयनकर्ता ड्रॉपडाउन को "*.wav" से बदलकर "All Files" कर दें।


इसके बाद, सर्वर मेनू पर वापस जाएँ, और "Backup/Restore" चुनें। "Download" चुनें। आपको एक zip फ़ाइल प्राप्त होगी जिसमें कुछ अलग-अलग .XML फ़ाइलें होंगी।

सामग्री निकालें और "config.xml" खोलें। नीचे के पास आपको '<Directory Entry="/path/to/media/"' के समान एक पंक्ति मिलेगी। यह महत्वपूर्ण है क्योंकि यह AgentDVR इंस्टॉलेशन के लिए फ़ोल्डर संरचना है, जो इंस्टॉलेशन प्रकार के आधार पर कुछ अलग रूपों में आ सकती है।

इसके बाद, objects.xml फ़ाइल को संपादित करें, और नीचे के पास '<entry type="EXE" param1=' के समान एक पंक्ति खोजें। पथ को संपादित करें, जो डिफ़ॉल्ट अलर्ट bat फ़ाइल को कॉल कर रहा होगा, और bash को कॉल करने वाला एक पथ डालें जो आपकी .sh स्क्रिप्ट को कॉल करे। आप पिछले चरण से पथ का अनुकरण कर सकते हैं ताकि आपको पता चले कि क्या डालना है।

इसके बाद, आप अपना लिसनर (listener) शुरू कर सकते हैं।

अब, सर्वर मेनू पर वापस जाएँ, और फिर से "Backup/Restore" चुनें। इस बार, फ़ाइल अपलोड करना चुनें, और अपनी संशोधित "objects.xml" फ़ाइल का चयन करें।

डैशबोर्ड को इन परिवर्तनों के साथ पुनरारंभ होना चाहिए। अब, सिद्धांत रूप में, आपके पास एक डमी कैमरा होना चाहिए जिसमें फोटो लेने पर आपकी रिवर्स शेल स्क्रिप्ट को ट्रिगर करने के लिए एक अलर्ट हो। अपना लिसनर शुरू करने के बाद, डमी कैमरा फीड पर राइट क्लिक करें, और "Take Photo" चुनें।

अब आपके पास एक रूट शेल होना चाहिए।
