Otra vulnerabilidad y otro exploit para Apache Struts2
Hace unos días se hizo pública otra vulnerabilidad en Apache Struts2, un popular framework para aplicaciones web en Java.
Dicha vulnerabilidad, CVE-2018-11776, permite a un atacante la ejecución remota de comandos. La versiones afectadas son Apache Struts 2.3 a 2.3.34 y 2.5 a 2.5.16.
Para poder aprovechar dicha vulnerabilidad, una acción (struts action) se debe definir sin namespace o usar algún carácter comodín, como por ejemplo /*. En estos casos, Struts usa OGNL (un lenguaje de expresiones de código abierto para Java) para determinar la acción a ejecutar basada en el namespace dado por el usuario, permitiendo así la posible ejecución de código remoto.
Existen pruebas de concepto pública para la explotación de esta vulnerabilidad, como por ejemplo en este repositorio. En el mismo, existen un par de scripts en Python, uno para comprobar si una aplicación web es vulnerable y el otro acepta comandos como parámetros que son ejecutados en el servidor donde corre nuestra aplicación. En dicho repositorio, hay algunas instrucciones para levantar un contenedor Docker con una aplicación usando Apache Struts2, más una serie de cambios en la configuración.
Para que el ataque se haga efectivo, se tienen que cumplir dos condiciones:
Fuente: Cyberhades
Dicha vulnerabilidad, CVE-2018-11776, permite a un atacante la ejecución remota de comandos. La versiones afectadas son Apache Struts 2.3 a 2.3.34 y 2.5 a 2.5.16.
Para poder aprovechar dicha vulnerabilidad, una acción (struts action) se debe definir sin namespace o usar algún carácter comodín, como por ejemplo /*. En estos casos, Struts usa OGNL (un lenguaje de expresiones de código abierto para Java) para determinar la acción a ejecutar basada en el namespace dado por el usuario, permitiendo así la posible ejecución de código remoto.
Existen pruebas de concepto pública para la explotación de esta vulnerabilidad, como por ejemplo en este repositorio. En el mismo, existen un par de scripts en Python, uno para comprobar si una aplicación web es vulnerable y el otro acepta comandos como parámetros que son ejecutados en el servidor donde corre nuestra aplicación. En dicho repositorio, hay algunas instrucciones para levantar un contenedor Docker con una aplicación usando Apache Struts2, más una serie de cambios en la configuración.
Para que el ataque se haga efectivo, se tienen que cumplir dos condiciones:
- El parámetro 'alwaysSelectFullNamespace' debe estar a 'true' en la configuración de Struts.
- El fichero de configuración de Struts contiene una etiqueta '<action ...>' que no especifica ningún espacio de nombres.
docker container run -it --rm -p 8080:8080 tuxotron/cve-2018-11776
La forma más sencilla para evitar las vulnerabilidades es actualizar a Apache Struts versiones 2.3.35 o 2.5.17; disponibles desde: http://struts.apache.org/download.html#struts-gaFuente: Cyberhades
Via: feedproxy.google.com
Otra vulnerabilidad y otro exploit para Apache Struts2
Reviewed by Anónimo
on
8:28
Rating: