JBOSS 下载地址:http://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip
EXP 下载地址:https://github.com/yunxu1/jboss-_CVE-2017-12149
2)
.Configuración del entorno wget http://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip
Paso 2: Modifique el archivo de configuración para que todos los hosts de la red puedan acceder a JBOSS
vim ~ / jboss-6.1.0.Final / server / default / deploy / jbossweb.sar / server.xml
Paso 3: Inicie JBOSS
./jboss-6.1.0.Final/bin/run.sh
Paso 4: Descarga EXP
clon de git https://github.com/yunxu1/jboss-_CVE-2017-12149
Hay métodos de uso de script EXP, pero también métodos de uso gráficos
3). Recopilación de información
Paso 1: use nmap para escanear puertos comunes del host de destino
nmap -p 1-65535 -A 192.168.1.107
Paso 2: Visite el puerto 8080 del host de destino para ver si se puede acceder normalmente
4). Explotación de vulnerabilidades
Utilice la EXP descargada para aprovechar la vulnerabilidad y abra la herramienta gráfica jboss para deserializar_CVE-2017-12149.jar
github ha lanzado un proyecto para detectar jboss: https://github.com/joaomatosf/jexboss
Cree la verificación del entorno aquí:
IP de vulnerabilidad: 192.168.127.128
Clona el proyecto directamente para usarlo localmente
Si el icono es rojo, significa que hay un problema.
Puede ver que el caparazón se ha recuperado con éxito.
Este proyecto también puede lograr un escaneo por lotes, lo que generalmente es muy bueno.
Comprender las vulnerabilidades de deserialización de Java
Se recomienda aprender Paper: las vulnerabilidades de deserialización de Java desde la entrada hasta en profundidad: https://xz.aliyun.com/t/2041. El contenido es más, primero comprenda la estructura de sintaxis simple de Java y los conceptos básicos de la programación orientada a objetos, y luego aprenda los conceptos básicos de serialización y deserialización y las causas de las vulnerabilidades.
(1) Serialización: el proceso de convertir objetos Java en secuencias de bytes es fácil de almacenar en memoria, archivos y bases de datos. El método writeObject () de la clase ObjectOutputStream se puede serializar.
(2) Deserialización: El proceso de restaurar una secuencia de bytes a un objeto Java. El método readObject () de la clase ObjectInputStream se utiliza para la deserialización.
(3) La causa de la vulnerabilidad: al exponer la API de deserialización o los puntos entrantes, el usuario puede manipular los datos entrantes, y el método readObject () de deserialización no realiza una detección de seguridad efectiva en los datos entrantes del usuario, y el atacante puede construir cuidadosamente el método anti-serialización Serializar el objeto y ejecutar código malicioso.