
Análisis educativo de CVE-2017-5638: una inyección OGNL que provoca RCE en Apache Struts 2, con recorrido del exploit, caso de estudio de Equifax y guía de prevención.
Apache Struts 2 es un framework de aplicaciones web de código abierto para desarrollar aplicaciones Java EE. Es la segunda generación del framework Struts, lanzado por primera vez el 10 de octubre de 2006. El framework Struts está diseñado para ayudar a crear aplicaciones web que utilizan una arquitectura MVC.
Apache Struts es un framework ampliamente utilizado; en 2017, más del 65 por ciento de las empresas Fortune 100 utilizaban el framework Apache Struts.
Esta vulnerabilidad fue publicada por primera vez por NVD el 03/10/2017, y se le ha asignado el nivel más alto de puntuación base 10, que es Crítico. El factor principal que impulsó la puntuación de vulnerabilidad más alta fue que las aplicaciones podían ser explotadas a través de la red con una complejidad mínima y un alto impacto en la integridad y la disponibilidad.
La vulnerabilidad permitía a un atacante ejecutar RCE en la aplicación mediante la introducción de expresiones de la Biblioteca de Navegación de Gráficos de Objetos (OGNL) en los encabezados HTTP.
Las versiones vulnerables del framework son Apache Struts-2 versión 2 2.3.x anteriores a 2.3.32 y 2.5.x anteriores a 2.5.10.1.
.png)
El código vulnerable se encuentra en el analizador Jakarta Multipart. Para realizar un exploit, el atacante utilizó la vulnerabilidad en la función LocalizedTextUtil.findText, que interpretaba el mensaje proporcionado dentro de ${...} como una expresión de la Biblioteca de Navegación de Gráficos de Objetos (OGNL). El atacante puede entonces usar estas expresiones OGNL que a su vez ejecutan comandos del sistema y pueden revelar el contenido de archivos sensibles como /etc/password, /etc/shadow, otorgando al atacante el control total. La aplicación además devolvía la salida de los comandos ejecutados por el atacante, facilitando así la acción del atacante.
La siguiente imagen muestra la solicitud HTTP con una expresión OGNL, que permitía a los atacantes explotar la vulnerabilidad.

En marzo de 2017, cuando se descubrió por primera vez la vulnerabilidad CVE-2017-5638 en el framework Apache Struts, la Fundación Apache publicó un parche para la vulnerabilidad, pero Equifax no aplicó el parche al sistema vulnerable, ya que los escaneos realizados para encontrar el sistema vulnerable no funcionaron.
Desde mayo hasta julio de 2017, los atacantes pudieron acceder a múltiples bases de datos de Equifax, exponiendo la información de millones de personas. El ataque afectó a 143 millones de personas y también reveló la información de tarjetas de crédito de más de 200,000 personas.
Los atacantes pudieron continuar los ataques sin ser detectados durante 76 días.
La empresa gastó 1.4 mil millones de dólares para actualizar su seguridad después de la importante brecha de datos.
Actualizaciones frecuentes
Actualización de todos los componentes, incluido el framework utilizado en la aplicación
Pruebas de penetración frecuentes
Programas de recompensas para encontrar vulnerabilidades