Libera tu mente y alcanza tus metas
Explotar vulnerabilidad crítica en Apache Struts 2 (CVE-2023-50164)
Explotar vulnerabilidad crítica en Apache Struts 2 (CVE-2023-50164)

Explotar vulnerabilidad crítica en Apache Struts 2 (CVE-2023-50164)

En diciembre de 2023, se publicó un CVE y un parche críticos para Apache Struts 2. Bautizada como CVE-2023-50164 (CVSS 9.8), esta vulnerabilidad puede permitir a un atacante conseguir ejecución remota en servidores vulnerables enviando una solicitud de subida (upload) de archivos especialmente diseñada.

Esta vulnerabilidad afecta a las versiones de Struts que van desde 2.5.0 a 2.5.32 y 6.0.0 a 6.3.0:

  • Puntales 2.0.0 - Puntales 2.3.37 (EOL)
  • Puntales 2.5.0 - Puntales 2.5.32
  • Puntales 6.0.0 - Puntales 6.3.0

Normalmente, con ActionSupport la aplicación de Struts procesará un upload y creará un archivo temporal con uploadFilename configurado con un nombre temporal que no está controlado por el usuario:

Pero lo sorprendente (y escalofriante por su facilidad de explotación) es que tras una investigación, el investigador chino youkill descubrió que se puede renombrar upload a Upload (con "U") y añadir otro campo uploadFilename para configurar otro nombre de archivo.

Si esto lo combinamos con un bonito Path Traversal tendremos la posibilidad de subir nuestra webshell y por ende el RCE:

Si el servidor es vulnerable obtendremos la subida con éxito.

Contramedidas

  • Parches: la vulnerabilidad se ha solucionado en las versiones 2.5.33 o 6.3.0.2 o superiores.
  • Eliminar el uso de clases vulnerables: para sistemas donde no es necesario utilizar ActionSupport, reemplaza cualquier instancia de esta clase por otra que no sea vulnerable.
  • Medidas de refuerzo: elimina el acceso innecesario al servidor de aplicaciones (como el acceso de escritura a directorios confidenciales), ya que esto significa que un atacante no podría aprovechar acciones como colocar una webshell a donde pueda acceder a la misma.
  • Firewalls de aplicaciones web (WAF): comúnmente tienen reglas predeterminadas para detectar intentos de explotación de Path Traversal.

Detección

Como la subida del archivo es una solicitud POST modificada, es poco probable que los logs web estándar ayuden a detectar signos de explotación. Si tu aplicación web registra datos POST, existen algunos indicadores fijos que puede utilizar para generar reglas de detección. A continuación se muestra un ejemplo de regla Sigma.

Referencias