
Confluence प्री-ऑथ दूरस्थ कोड निष्पादन OGNL इंजेक्शन के माध्यम से (CVE-2022-26134)
Confluence Pre-Auth Remote Code Execution via OGNL Injection (CVE-2022-26134)
30 मई, 2022 को, Volexity नामक एक संगठन ने Atlassian के Confluence Server और Data Center संस्करणों (https://www.atlassian.com/software/confluence) में एक बिना प्रमाणीकरण वाली RCE कमजोरी (NIST पर 9.8 स्कोर) की पहचान की।
Confluence टीमों के लिए एक सहयोगी दस्तावेज़ीकरण और परियोजना प्रबंधन ढाँचा है। Confluence सदस्यों के लिए एक केंद्रीकृत कार्यक्षेत्र प्रदान करके परियोजना की स्थिति को ट्रैक करने में मदद करता है।
Confluence के निम्नलिखित संस्करण इस CVE के प्रति संवेदनशील हैं:
आप CVE-2022-26134 के लिए NIST प्रविष्टि यहाँ देख सकते हैं (https://nvd.nist.gov/vuln/detail/CVE-2022-26134)।
यह CVE Java के लिए OGNL (Object-Graph Navigation Language) अभिव्यक्ति भाषा में एक कमजोरी का उपयोग करता है। OGNL का उपयोग Java ऑब्जेक्ट्स के गुणों को प्राप्त करने और सेट करने के लिए, अन्य कई चीजों के अलावा, किया जाता है।
उदाहरण के लिए, OGNL का उपयोग फ्रंट-एंड तत्वों जैसे टेक्स्ट बॉक्स को बैक-एंड ऑब्जेक्ट्स से बाँधने के लिए किया जाता है और इसका उपयोग Java-आधारित वेब अनुप्रयोगों जैसे Confluence में किया जा सकता है। हम नीचे दिए गए स्क्रीनशॉट में देख सकते हैं कि OGNL का उपयोग कैसे किया जाता है। मान एक वेब फॉर्म में इनपुट किए जाते हैं, जहाँ ये मान एप्लिकेशन के अंदर ऑब्जेक्ट्स में संग्रहीत किए जाएँगे।
शोषण हम इस तथ्य का दुरुपयोग कर सकते हैं कि OGNL को संशोधित किया जा सकता है; हम परीक्षण और शोषण की जाँच के लिए एक पेलोड बना सकते हैं।
OGNL के भीतर इस कमजोरी का शोषण करने के लिए, हमें एक HTTP GET अनुरोध करना होगा और अपने पेलोड को URI में रखना होगा। उदाहरण के लिए, हम Java रनटाइम को सर्वर पर एक फ़ाइल बनाने जैसा कमांड निष्पादित करने का निर्देश दे सकते हैं: "${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/"।
इसे URL एन्कोड करने की आवश्यकता होगी। आप अपने पेलोड को URL एन्कोड करने में सहायता के लिए इस वेबसाइट का उपयोग कर सकते हैं (ध्यान दें कि आपके curl पेलोड को अंत में एक ट्रेलिंग / के साथ समाप्त होना चाहिए, न कि $2F के साथ)। कमांड: user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/ अब, उपरोक्त कमांड में "ls /tmp" कमांड निष्पादित करके सत्यापित करें कि उपरोक्त कमांड सफलतापूर्वक निष्पादित हुआ या नहीं।
कुछ काम करने वाले PoC शोषण उपलब्ध हैं, मैं Samy Younsi (Mwqda) के Python में लिखे और GitHub पर होस्ट किए गए PoC (https://github.com/h3v0x/CVE-2022-26134) का प्रदर्शन करूँगा।
पता लगाना
लॉग फ़ाइलें Confluence एक Apache Tomcat सर्वर है जिसकी लॉगिंग /opt/atlassian/confluence/logs में स्थित है। आप grep जैसे कमांड का उपयोग करके उन HTTP GET अनुरोधों को खोज सकते हैं जो Java रनटाइम का उपयोग करके कमांड निष्पादित करने वाले पेलोड का उपयोग कर रहे हैं। उदाहरण के लिए:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" catalina.out
YARA यदि आपके पास Confluence चलाने वाले सर्वर पर Yara स्थापित है, तो Volexity (कमजोरी खोजने वालों) ने आपके उपयोग के लिए Yara नियम बनाया है, जो इस रिपॉजिटरी में और साथ ही निम्नलिखित लिंक (https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar) पर प्रदान किया गया है।
पैचिंग Atlassian ने इस CVE से प्रभावित अपने उत्पादों के लिए एक सलाहकार जारी किया है, जिसे आप यहाँ पढ़ सकते हैं (https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html)। समस्या को हल करने के लिए, आपको अपने Confluence संस्करण को अपग्रेड करने की आवश्यकता है। प्रकाशन के समय सुझाई गई सूची है:
याद रखें, OGNL Java-आधारित वेब अनुप्रयोगों के लिए एक अभिव्यक्ति भाषा है, इसलिए यह कमजोरी अन्य वेब ऐप्स पर भी लागू होगी जो Confluence द्वारा उपयोग की जाने वाली समान कक्षाओं को चलाते हैं!
अतिरिक्त पठन सामग्री: