Webkul Krayin CRM 2.2.x में CVE-2026-38526 का तकनीकी विश्लेषण और नियंत्रित पुनरुत्पादन, जो प्रमाणित मनमानी फ़ाइल अपलोड से रिमोट कोड निष्पादन की ओर ले जाता है।
प्रमाणित मनमाना फ़ाइल अपलोड जो रिमोट कोड एक्ज़ीक्यूशन की ओर ले जाता है — Webkul Krayin CRM 2.2.x में CVE-2026-38526 का तकनीकी विश्लेषण और नियंत्रित पुनरुत्पादन।
CVE-2026-38526 एक प्रमाणित मनमाना फ़ाइल अपलोड भेद्यता है जो Webkul Krayin CRM 2.2.x को प्रभावित करती है।
भेद्य कार्यक्षमता एप्लिकेशन के TinyMCE अपलोड एंडपॉइंट के माध्यम से उजागर होती है:
POST /admin/tinymce/upload
एप्लिकेशन उस फ़ाइल के प्रकार को पर्याप्त रूप से प्रतिबंधित नहीं करता जिसे अपलोड किया जा सकता है। एक प्रमाणित उपयोगकर्ता सर्वर-साइड निष्पादन योग्य एक्सटेंशन वाली फ़ाइल जमा कर सकता है, जैसे .php। एप्लिकेशन अपलोड की गई फ़ाइल को संग्रहीत करता है और उसका सुलभ URL लौटाता है।
जब डिप्लॉयमेंट अपलोड स्थान से PHP निष्पादन की अनुमति देता है, तो अपलोड की गई फ़ाइल को बाद में वेब सर्वर के माध्यम से अनुरोध किया जा सकता है, जिसके परिणामस्वरूप वेब एप्लिकेशन प्रक्रिया के संदर्भ में रिमोट कोड एक्ज़ीक्यूशन होता है।
प्रकाशित CVE रिकॉर्ड भेद्यता को CVSS 3.1: 9.9 (गंभीर) रेट करता है।
इस रिपॉज़िटरी में भेद्यता का मेरा स्वयं का तकनीकी विश्लेषण और नियंत्रित पुनरुत्पादन शामिल है।
भेद्यता पहले ही CVE-2026-38526 के अंतर्गत सार्वजनिक रूप से प्रकट की जा चुकी थी। यह कार्य भेद्यता की खोज का दावा नहीं करता। इस अनुसंधान का उद्देश्य भेद्य कार्यान्वयन को समझना, नियंत्रित वातावरण में शोषण पथ का पुनरुत्पादन करना, और उन परिस्थितियों की जाँच करना था जो फ़ाइल-अपलोड समस्या को रिमोट कोड एक्ज़ीक्यूशन में बदल देती हैं।
इस भेद्यता का उपयोग Hack The Box GCSB 2026 Nexus मशीन में भी किया गया था, जिसने इस समस्या के अध्ययन के लिए एक व्यावहारिक वातावरण प्रदान किया।
उत्पाद: Webkul Krayin CRM प्रभावित संस्करण: 2.2.x भेद्यता: मनमाना फ़ाइल अपलोड परिणामी प्रभाव: रिमोट कोड एक्ज़ीक्यूशन प्रमाणीकरण: आवश्यक आक्रमण वेक्टर: नेटवर्क CWE: CWE-434 — खतरनाक प्रकार वाली फ़ाइल का अप्रतिबंधित अपलोड CVSS: 9.9 गंभीर CVE: CVE-2026-38526
भेद्य कार्यक्षमता इनके द्वारा संभाली जाती है:
/admin/tinymce/upload
एंडपॉइंट file पैरामीटर के माध्यम से अपलोड की गई फ़ाइल स्वीकार करता है। संबंधित एप्लिकेशन लॉजिक संग्रहीत फ़ाइलनाम को मूल फ़ाइलनाम से प्राप्त करता है और उसका मूल एक्सटेंशन बनाए रखता है।

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

जनरेट किए गए फ़ाइलनाम का उपयोग अंतर्निहित समस्या का समाधान नहीं करता।
उदाहरण के लिए, shell.php को .php जैसे जनरेट किए गए फ़ाइलनाम में बदलना अपलोड की गई फ़ाइल को सुरक्षित नहीं बनाता यदि सर्वर .php फ़ाइलों को निष्पादन योग्य PHP कोड के रूप में व्याख्यायित करना जारी रखता है।
एक अप्रतिबंधित अपलोड का स्वचालित रूप से अर्थ रिमोट कोड एक्ज़ीक्यूशन नहीं होता।
निष्पादन पथ सर्वर द्वारा अपलोड की गई फ़ाइल के प्रबंधन पर निर्भर करता है।
भेद्य डिप्लॉयमेंट परिदृश्य में, श्रृंखला बनती है

यदि अपलोड निर्देशिका के लिए PHP निष्पादन अक्षम है, तो प्रत्यक्ष RCE पथ को रोका जा सकता है, भले ही अंतर्निहित मनमाना फ़ाइल-अपलोड कमज़ोरी बनी रहती है।
wget:
wget https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/upload.py
wget https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/marker.php
curl:
curl -LO https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/upload.py
curl -LO https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/marker.php
2. फ़ाइलों को यहाँ रखें
poc/
├── upload.py
└── marker.php
3. एक Python वातावरण बनाएँ और निर्भरता स्थापित करें
python3 -m venv .venv
source .venv/bin/activate
pip install requests
4. PoC को निष्पादन योग्य बनाएँ
chmod +x poc/upload.py
6. इसे चलाएँ
python3 poc/upload.py \
--url http://[Lab_IP:PORT] \
--email [email protected] \
--password 'YOUR_PASSWORD'
शोषण के लिए एक प्रमाणित खाता आवश्यक है जो कमज़ोर कार्यक्षमता तक पहुँच सके।
उच्च स्तर पर:
परिणामी निष्पादन संदर्भ अंतर्निहित परिनियोजन द्वारा निर्धारित होता है। एक सामान्य Linux परिनियोजन में यह वेब-सर्वर सेवा खाता हो सकता है, जैसे:
www-data
यह स्वचालित रूप से ऑपरेटिंग-सिस्टम रूट विशेषाधिकार प्रदान नहीं करता है। आगे का प्रभाव समझौता किए गए वातावरण की अनुमतियों और कॉन्फ़िगरेशन पर निर्भर करता है।
कमज़ोर व्यवहार को तीन महत्वपूर्ण संक्रियाओं तक सीमित किया जा सकता है।
अपलोड की गई फ़ाइल प्राप्त करें
$file = request()->file('file');
एप्लिकेशन क्लाइंट द्वारा प्रदान की गई फ़ाइल प्राप्त करता है।
क्लाइंट-नियंत्रित एक्सटेंशन को सुरक्षित रखें
$filename = md5($file->getClientOriginalName().time())
.'.'.$file->getClientOriginalExtension();
फ़ाइल नाम स्वयं बदल दिया जाता है, लेकिन मूल एक्सटेंशन बनाए रखा जाता है। यह एक महत्वपूर्ण अंतर है: फ़ाइल नाम का यादृच्छिकीकरण फ़ाइल-प्रकार सत्यापन नहीं है।
फ़ाइल को संग्रहीत करें और उजागर करें
$path = $file->storeAs($this->storagePath, $filename);
return [
'file' => $path,
'file_name' => $file->getClientOriginalName(),
'file_url' => Storage::url($path),
];
एप्लिकेशन फ़ाइल को संग्रहीत करता है और क्लाइंट को उसका URL प्रदान करता है।
सफल शोषण एक हमलावर को वेब एप्लिकेशन के विशेषाधिकारों के अंतर्गत कोड निष्पादन प्रदान कर सकता है।
परिनियोजन के आधार पर, यह एक हमलावर को निम्नलिखित की अनुमति दे सकता है:
एप्लिकेशन फ़ाइलें पढ़ें
एप्लिकेशन कॉन्फ़िगरेशन तक पहुँचें
डेटाबेस क्रेडेंशियल या अन्य रहस्य प्राप्त करें
एप्लिकेशन डेटा संशोधित करें
अतिरिक्त दुर्भावनापूर्ण कोड तैनात करें
समझौता किए गए होस्ट से सुलभ अन्य प्रणालियों की ओर पिवट करें
आगे विशेषाधिकार वृद्धि का प्रयास करें
वास्तविक प्रभाव समझौता किए गए एप्लिकेशन प्रक्रिया के विशेषाधिकारों और अंतर्निहित सिस्टम के सुरक्षा कॉन्फ़िगरेशन पर निर्भर करता है।
एक सुरक्षित कार्यान्वयन को एकल एक्सटेंशन जाँच पर निर्भर रहने के बजाय सुरक्षा की कई परतों का उपयोग करना चाहिए।
केवल स्पष्ट रूप से आवश्यक फ़ाइल प्रकार स्वीकार किए जाने चाहिए। उदाहरण के लिए:
.jpg
.jpeg
.png
.gif
.webp