Explotación de la colección de Ysoserial y Jenkins commons: ¿qué puede hacer?

4

He leído acerca de la vulnerabilidad de Jenkins en vulnerabilidad de Commons Collections . He probado esto (legítimamente) en un sistema, pero no soy muy bueno en esto, así que parece que no puedo lograr mucho. ¿Cuál es el peor de los casos si alguien aprovecha esta vulnerabilidad? ¿Qué es posible hacer?

    
pregunta user16655 16.12.2015 - 09:21
fuente

3 respuestas

3

En realidad, esta vulnerabilidad está muy extendida, especialmente en las empresas que usan Java en gran medida. Hay un excelente artículo escrito por Sijmen Ruwhof que cubre este tema y cómo afecta a una gran cantidad de servidores y herramientas de aplicaciones Java como Jenkins.

También hay un gran artículo escrito por Will Sargent que trata los problemas con la serialización de Java, las diversas formas en que puede ser explotada y sugiere algunas mitigaciones. Una de las mitigaciones es instalar el agente Java NotSoSerial en todas las JVM de su red. Esta sería una solución más fácil a corto plazo mientras se espera que todas las aplicaciones sean parcheadas y reconstruidas. Implica solo modificar los argumentos de inicio de JVM.

    
respondido por el ARau 16.12.2015 - 17:50
fuente
6

Simplemente lea el mismo artículo y encontrará:

  

Esta vulnerabilidad es asombrosa. Se ejecuta en la memoria y no se va a desaparecer pronto. Ejecución remota de código en muchas cosas, incluidas aplicaciones personalizadas

Por lo tanto, esta vulnerabilidad permitirá la ejecución remota como un usuario sin privilegios en muchos casos. Desde allí, a menudo es posible elevar los privilegios, es decir, a un superusuario y tal vez atacar otras máquinas en la red interna.

Por supuesto, esto necesita información maliciosa del usuario. Si puede garantizar que nunca se envíe dicha información a la aplicación, entonces probablemente esté seguro. Probablemente no puedas garantizarlo para instalaciones públicas. Puede pensar que puede controlarlo para instalaciones internas pero no contaría con ello, ya que a las aplicaciones internas y externas generalmente se accede por el mismo navegador. Y al usar CSRF, XSS o ataques similares, un sitio externo puede dañar un sitio interno usando el navegador como un trampolín.

  

¿Qué es posible hacer?

Esto también se explica en The Fix - Kind of ... parte de la publicación. En efecto, necesita arreglar la biblioteca relevante, reemplazar la biblioteca con una solución fija dentro de su aplicación y extenderla a todas partes.

    
respondido por el Steffen Ullrich 16.12.2015 - 10:24
fuente
2

Además de lo que otros han dicho (las publicaciones de blownie55 y Steffen Ullrich son excelentes), me gustaría agregar un poco de información adicional aquí.

El peor escenario posible

  

¿Cuál es el peor de los casos si alguien aprovecha esta vulnerabilidad? ¿Qué es posible hacer?

Si su aplicación se ha dirigido con éxito, entonces este ataque permite la ejecución remota de código, lo que significa que un atacante puede hacer todo lo que quiera para su sistema. Esto les permite ejecutar sus propias aplicaciones, modificar su código sin firmar, modifique su código firmado si pueden comprometer su repositorio de origen y, lo que es peor, acceda a los datos de su cliente.

Cualquier máquina accesible a la máquina comprometida también debe considerarse vulnerable.

En el peor de los casos, es esencialmente una violación de los datos del cliente y / o usuario, o incluso de sus secretos comerciales, algo que ninguna empresa legítima quiere que suceda.

Si está utilizando WebSphere, IBM ha lanzado un parche para esto .

Determinar la vulnerabilidad

Tomado del sitio web de IBM : El perfil Liberty de IBM WebSphere Application Server solo permite el Apache Commons Collections si está utilizando UNA de las siguientes tres características:

  • jsf-2.0
  • jsf-2.2
  • jpa-2.0

Puede ser vulnerable si está utilizando cualquiera de estas funciones. Para determinar si es vulnerable, puede buscar en el archivo console.log este mensaje:

[AUDIT ] CWWKF0012I: The server installed the following features: [xxxxx]

Si en lugar de xxxxx , no contiene ninguna de las tres funciones enumeradas, entonces no eres vulnerable.

Reglas de Snort IDS

Deberá proteger su servidor de las vulnerabilidades entrantes en la red. Snort es un sistema de detección de intrusos que ayuda a prevenir el acceso no autorizado. Si estás usando Snort, aquí están las reglas que necesitarás:

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Calling Common Collection Function"; flow:to_server,established; content:"rO0ABXNyA"; content:"jb21tb25zLmNvbGxlY3Rpb25z"; fast_pattern; distance:0; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814811; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Calling Common Collection Function"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"commons.collections"; nocase; distance:0; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814812; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"java/io/Serializable"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814813; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Groovy Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"org.codehaus.groovy.runtime.ConversionHandler"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814814; rev:1;)

alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Spring Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"org.springframework.core.SerializableTypeWrapper"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814815; rev:1;)

Aftermath

Debido a que esta vulnerabilidad permitió la ejecución remota de código, deberá realizar un barrido forense del sistema afectado y de las máquinas a las que tuvo acceso. Existe la posibilidad de que el agujero del conejo sea mucho más profundo. Sin embargo, este tipo de barrido es un poco demasiado amplio para esta respuesta.

    
respondido por el Mark Buffalo 18.12.2015 - 02:43
fuente

Lea otras preguntas en las etiquetas