
Configuración y recreación de exploit para CVE-2022-42889 Text4Shell.
Para encontrar el informe completo de configuración y recreación del exploit, busque el archivo CVE-2022-42889-Project Vulnerability Exploitation Report. La VM que se utilizó para construir y ejecutar el exploit no está incluida en este repositorio.
Configuración y recreación del exploit para CVE-2022-42889 Text4Shell.
CVE-2022-42889, también conocido como "Text4Shell", fue una vulnerabilidad crítica en la biblioteca Apache Commons Text, que es una biblioteca utilizada frecuentemente en aplicaciones Java para el procesamiento de texto y para proporcionar adiciones al manejo de texto estándar del Java Development Kit (JDK). Se reportó que las versiones de la biblioteca Apache Commons Text, que datan de 2018, desde la 1.5 hasta la 1.9, estaban afectadas. La vulnerabilidad se origina en el manejo inseguro de entrada dentro de la clase StringSubstitutor, lo que permite a los atacantes explotar las características de interpolación de cadenas de la biblioteca. Esto puede resultar en ejecución remota de código (RCE) al procesar entrada maliciosamente diseñada, lo que representa riesgos significativos para las aplicaciones que dependen de esta biblioteca. Por lo tanto, CVE-2022-42889 fue considerada una vulnerabilidad crítica y se le asignó una puntuación base CVSS 3.x de 9.8, debido al grave impacto que podría tener en los sistemas afectados, incluido el compromiso total del sistema.
Esta vulnerabilidad ha sido comparada con las infames vulnerabilidades Log4Shell (CVE-2021-44228) y Spring4Shell (CVE-2022-22965) debido a su potencial de ser explotada en aplicaciones basadas en Java. A diferencia de Log4Shell y Spring4Shell, que eran vulnerables incluso en los casos de uso más básicos, no todos los usuarios de la biblioteca Apache Commons Text se verían afectados, ya que la biblioteca debe usarse de una manera específica para exponer la superficie de ataque y hacer explotable la vulnerabilidad.
La demostración del exploit utiliza el concepto de prueba de cyberhack255 en Github que proporciona todos los scripts y herramientas necesarias para ejecutar el exploit. A continuación se presenta una breve descripción de cómo procederá la explotación:
La demostración utiliza un Dockerfile que configura un contenedor Docker para ejecutar una aplicación Java empaquetada como un archivo JAR gordo (text4shell-poc.jar). Utiliza la imagen oficial de OpenJDK 8 runtime basada en Alpine Linux, la cual proporciona un entorno mínimo y ligero. El archivo instala bash para permitir la ejecución de scripts bash durante la demostración. El puerto 8080 está expuesto para permitir el acceso externo al contenedor mientras se ejecuta el exploit.
Este PoC se centrará en la creación de un payload malicioso que explota el mecanismo de sustitución de cadenas en la biblioteca Apache Commons Text. El payload apuntará al script de clave de búsqueda invocando el método StringSubstitutor.createInterpolator(). Para esta demo, el payload creará de forma remota un nuevo archivo dentro del Docker.