
CVE-2026-36669 के लिए विस्तृत सुरक्षा सलाह: Feng Office में अप्रमाणित मनमाना फ़ाइल अपलोड, जो संग्रहीत XSS और सत्र अपहरण को सक्षम करता है। इसमें तकनीकी विश्लेषण, PoC और उपचार कदम शामिल हैं।
ck_upload_handler.php में Feng Office Community Edition (संस्करण 3.11.13.11) में बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड करने की कमजोरी मौजूद है। यह दोष दूरस्थ, बिना प्रमाणीकरण वाले हमलावरों को वेब-एक्सेसिबल डायरेक्टरी में मनमानी फ़ाइलें (दुर्भावनापूर्ण .html या .php स्क्रिप्ट सहित) अपलोड करने की अनुमति देता है। जब प्रशासनिक कुकी सुरक्षा (HttpOnly) की कमी के साथ जोड़ा जाता है, तो यह कमजोरी स्टोर्ड क्रॉस-साइट स्क्रिप्टिंग (XSS) और प्रशासनिक सत्र अपहरण का कारण बन सकती है।
| मीट्रिक | विवरण |
|---|
| CVE पहचानकर्ता | CVE-2026-36669 |
| कमजोरी का प्रकार | खतरनाक प्रकार वाली फ़ाइल का अप्रतिबंधित अपलोड (CWE-434) |
| संबंधित कमजोरी | महत्वपूर्ण कार्य के लिए प्रमाणीकरण की कमी (CWE-306) |
| प्रभावित उत्पाद | Feng Office Community Edition |
| प्रभावित संस्करण | संस्करण 3.11.13.11 (और संभावित रूप से पुराने संस्करण) |
| शोषण स्थिति | Proof of Concept सत्यापित |
| उपचार स्थिति | अनपैच (विक्रेता को सूचित किया गया, मानक प्रकटीकरण विंडो के भीतर कोई पैच प्रदान नहीं किया गया) |
एंडपॉइंट ck_upload_handler.php एक स्टैंडअलोन स्क्रिप्ट के रूप में कार्य करता है। यह मुख्य एप्लिकेशन के प्रमाणीकरण मिडलवेयर या एक्सेस कंट्रोल लिस्ट (ACL) को लोड या इनहेरिट नहीं करता है। परिणामस्वरूप, इस स्क्रिप्ट को सीधे भेजा गया कोई भी बाहरी अनुरोध प्रमाणित माना जाता है।
ck_upload_handler.php के स्रोत कोड में, सर्वर-साइड फ़ाइल सत्यापन तर्क (पंक्तियाँ 21–25) जो अपलोड को विशिष्ट इमेज फ़ॉर्मेट (.jpg, .png, .gif) तक सीमित रखने के लिए डिज़ाइन किया गया था, स्पष्ट रूप से टिप्पणी कर दिया गया है:
// $pattern = "/\.(jpg|png|gif)$/i";
// if (!preg_match($pattern,$_FILES['upload']['name'])) {
// ...
// }
क्योंकि यह regex बाधा निष्क्रिय है, फ़ाइल अपलोड तंत्र किसी भी उपयोगकर्ता-आपूर्ति किए गए एक्सटेंशन को स्वीकार करता है।
स्क्रिप्ट अपलोड की गई फ़ाइलों को सीधे /tmp/ डायरेक्टरी में लिखने के लिए PHP copy() फ़ंक्शन का उपयोग करती है, जो वेब-एक्सेसिबल होने के लिए कॉन्फ़िगर किया गया है।
ग्लोबल कॉन्फ़िगरेशन फ़ाइल application/config/config.php सत्र कुकीज़ पर HttpOnly फ़्लैग लागू नहीं करती है। जब कोई हमलावर क्लाइंट-साइड स्क्रिप्ट ब्लॉक वाली .html फ़ाइल अपलोड करता है, तो फ़ाइल देखने वाला कोई भी व्यवस्थापक अपने सक्रिय सत्र के संदर्भ में स्क्रिप्ट निष्पादित करेगा। यह हमलावरों को चुपचाप सक्रिय प्रशासनिक सत्र टोकन निकालने की अनुमति देता है।
सूचना: यह Proof of Concept केवल शैक्षिक और रक्षात्मक ऑडिटिंग उद्देश्यों के लिए प्रदान किया गया है।
कमजोरी को सत्यापित करने के लिए, एंडपॉइंट पर एक हानिरहित सत्यापन फ़ाइल (जैसे test.html) युक्त मल्टीपार्ट POST अनुरोध भेजें, जिसमें आवश्यक CKEditorFuncNum पैरामीटर जोड़ा गया हो:
curl -i -X POST \
-F "[email protected]" \
"http://<target-domain>/ck_upload_handler.php?CKEditorFuncNum=1"
जहाँ test.html में बुनियादी proof-of-concept HTML मार्कअप है:
<!DOCTYPE html>
<html>
<body>
<script>
alert("Vulnerability Verified: " + document.cookie);
</script>
</body>
</html>
यदि कमजोर है, तो सर्वर 200 OK स्थिति के साथ उत्तर देगा और अपलोड पथ दर्शाने वाला एक JavaScript ब्लॉक आउटपुट करेगा:
<script type="text/javascript">
window.parent.CKEDITOR.tools.callFunction("1", "/tmp/test.html", "");
</script>
यदि आप Feng Office का प्रभावित संस्करण चला रहे हैं, तो फ़ाइल अपलोड एंडपॉइंट को सुरक्षित करने के लिए निम्नलिखित मैनुअल हॉटफ़िक्स लागू करें:
सुनिश्चित करें कि ck_upload_handler.php किसी भी फ़ाइल अपलोड तर्क को संसाधित करने से पहले सक्रिय प्रशासनिक सत्रों की जाँच करता है।
टिप्पणी हटाएँ और एक्सटेंशन जाँच को सख्ती से लागू करें। उन अपलोड को अस्वीकार करें जो स्पष्ट रूप से अपेक्षित गैर-निष्पादन योग्य इमेज MIME-प्रकारों से मेल नहीं खाते:
$pattern = "/\.(jpg|jpeg|png|gif)$/i";
if (!preg_match($pattern, $_FILES['upload']['name'])) {
header("HTTP/1.1 403 Forbidden");
exit("Invalid file type.");
}
सुनिश्चित करने के लिए अपनी PHP कॉन्फ़िगरेशन या एप्लिकेशन बूटस्ट्रैप कॉन्फ़िगरेशन को संशोधित करें कि सत्र कुकीज़ क्लाइंट-साइड स्क्रिप्टिंग API के माध्यम से सुलभ न हों:
session.cookie_httponly = On
Soufiane LAGZIRI