¿Qué es la primavera?
Spring es conocido por ser un framework de código abierto utilizado principalmente para la creación de aplicaciones Java. En realidad es mucho más que eso, ya que su arquitectura y diseño se centran en la eficiencia y la simplicidad, pero explicar más sobre este framework en particular no es el propósito de este artículo. Puede encontrar más información en aquí or aquí y su código es el siguiente aquí.
¿Cómo se utiliza?
Es posible determinar aproximadamente cuántos servidores expuestos a Internet tienen instalada alguna versión de Spring. Para ello, una de las opciones es shodan.
La técnica utilizada es básicamente un favicon hashing. La consulta particular en Shodan es “http.favicon.hash:116323821”.
En la siguiente imagen podemos ver que hay más de 180.000 aplicaciones activas ejecutando alguna versión de Spring:
Conocer el favicon del hash de un producto es fundamental. Se utiliza un código como el siguiente:
importar mmh3
solicitudes de importación
importar códecs
cabeceras = {
‘User-Agent’: ‘Mozilla’,
}
dir=entrada(‘enlace al favicon’)
response = requests.get(dir,headers=cabeceras,verify=False)
favicon =codecs.encode(response.content,’base64′)
hash = mmh3.hash(favicon)
imprimir (hash)
Vulnerabilidad de Spring4shell
¿Qué es Spring4shell?
Spring4shell es una vulnerabilidad crítica (9.8/100) en Spring Core. Permite a un atacante sin privilegios de autenticación ejecutar un código remoto. En particular, esta vulnerabilidad afecta a Spring MVC y Spring WebFlux.
Existen algunos requisitos para que una solicitud sea vulnerable:
- Versión del JDK >= 9.
- Spring debe instalarse en las versiones 5.3.0 a 5.3.17, 5.2.0 a 5.2.19 o anteriores.
- La aplicación debe configurarse con Apache Tomcat como contenedor de Servlets.
- Dependencias de spring-webmvc o spring-webflux.
- Un formato de archivo WAR en lugar del tradicional JAR.
Además de ser una vulnerabilidad crítica que afecta a muchos servidores y aplicaciones, se publicó antes de que se publicara el parche de seguridad y se hubiera asignado un CVE.
Hoy en día, hay muchos repositorios de Github y páginas con POC funcionales:
https://github.com/BobTheShoplifter/Spring4Shell-POC
https://github.com/reznok/Spring4Shell-POC
https://github.com/WeiJiLab/Spring4Shell-POC
https://github.com/ckkok/spring4shell-poc
Por otro lado, hace unos días se publicó un “anuncio anticipado” en la página web de Spring, en el que se mencionaba el problema y se informaba de la publicación de algunos parches y formas de solucionar esta vulnerabilidad sin tener que cambiar de versión.
¿Cómo detectarlo? ¿Soy vulnerable?
Si se cumplen los requisitos para que esta aplicación sea vulnerable, entonces es muy probable que la vulnerabilidad exista. Sin embargo, horas después de que se publicara el primer POC, ya había formas de asegurarse de si la vulnerabilidad existía:
- En ProyectoDescubrimiento lanzó una plantilla para Núcleos (aquí).
- Existen algunos repositorios no vinculados oficialmente al proyecto Nmap que contienen scripts para detectarlo utilizando la herramienta (aquí).
¿Le interesan nuestros productos? Más información🌟