Vulnerabilidades de deserialización de Java y ejemplos detallados

Tabla de contenido

1. Serialización y deserialización

Publicación por entregas

usar

2. Vulnerabilidad de deserialización de Java

aparecen datos

interfaz funcional

Descubrimiento de vulnerabilidades

explotar

3. Demostración de serialización y deserialización de Java

4. Demostración del campo de tiro


1. Serialización y deserialización

Publicación por entregas

        El proceso de convertir un objeto Java en una secuencia de bytes (flujo de bytes).

deserialización

        El proceso de restaurar una secuencia de bytes (flujo de bytes) a un objeto Java.

usar

  • Guarde permanentemente la secuencia de bytes del objeto en el disco duro, generalmente en un archivo (objeto persistente).
  • Secuencia de bytes para transferir un objeto a través de la red (objeto de transferencia de red)

2. Vulnerabilidad de deserialización de Java

aparecen datos

1. Características:
        Las operaciones de deserialización generalmente se usan para importar archivos de plantilla, comunicación de red, transmisión de datos, almacenamiento con formato de registro y conteo de objetos.
Escenarios empresariales como el almacenamiento de datos en disco o el almacenamiento en base de datos . Por lo tanto, el proceso de auditoría se centró en estas áreas funcionales.
2. Características de los datos:
        Una parte de los datos comienza con rO0AB , básicamente puede estar seguro de que esta cadena es la información encriptada por la serialización JAVA base64 ;
        O si comienza con ACED , entonces él es el hexadecimal de esta serialización de Java .
3. Específico:
        Parámetros http, cookie , sesión , el método de almacenamiento puede ser base64(rO0 ), base64 comprimido(H4s), MII y otros Servlets http,Sockets,Session manager, los protocolos incluidos incluyen: JMX, RMI, JMS, JND1, etc. (/xac/Xed) xm IXstream/XmldEcoder, etc. (Cuerpo de http: tipo de contenido: aplicación/xml) json (jackson, fastjson) incluido en la solicitud de http.

interfaz funcional

1, Java:
        Serializable Externalizable 接口, fastjson , jackson , gson , ObjectInputStream.read, ObjectObjectInputStream.readUnshared , XMLDecoder.read, ObjectYaml.loadXStream.fromXML , ObjectMapper.readValue, JSON.parseObject 等.
2, PHP :
        serializar() deserializar()。
3, pitón :
         pepinillo.

Descubrimiento de vulnerabilidades

1. Análisis de caja negra:

        Donde aparece la base de datos --- observar las características de los datos.

2. Análisis de caja blanca:

        Módulos de funciones y búsqueda de funciones y seguridad de componentes.

explotar

        El paquete jar integrado de Ysoserial se genera conjuntamente y se proporciona la herramienta especial de explotación de vulnerabilidad profesional.

3. Demostración de serialización y deserialización de Java

<Parte 1>

1. Demostrar el código que debe usarse.

2. Ejecute el código de la parte de serialización y podrá ver que el archivo especificado se genera en la ruta especificada y que el archivo contiene el contenido serializado.

3. Use herramientas para ver el contenido serializado y podrá ver que el contenido del encabezado es ACED .

4. Ejecute el código de la parte de deserialización y podrá ver que la deserialización es exitosa y se devuelve el contenido original.

5. Hasta ahora, podemos pensar que si el contenido del archivo de destino deserializado se modifica a un código ofensivo, entonces se pueden lograr ciertos comportamientos ofensivos.

<Parte 2>

1. Aquí se utiliza una herramienta que admite la generación de algunos pyloads.

2. Abra la herramienta.

3. El que está detrás está vacío, no se necesitan otros paquetes, solo se necesitan las clases nativas de Java.

4. Primero visite el siguiente sitio web para obtener una dirección.

5. Ejecute el siguiente comando en la herramienta.

6. Cuando llegue a la ruta de destino, puede ver el archivo generado y el contenido serializado en el archivo.

7. Utilice la herramienta para comprobar que el contenido del encabezado es ACED .

8. Coloque a.txt en el directorio recién deserializado. 

9. Cambie el archivo deserializado normal al archivo que acabamos de generar usando la herramienta.

10. Ejecute el serializador.

11. Puede ver que los datos se han obtenido con éxito en el sitio web.

12. ¿Qué pasó aquí?

        Aquí cambiamos sus datos de código originales a datos de código para acceder a http. Cuando la otra parte se esté deserializando, ejecutará nuestros datos de código modificados y accederá a http.

4. Demostración del campo de tiro

1. Inicie el campo de tiro.

2. Ingrese al campo de tiro y seleccione el nivel correspondiente.

3. Puede ver que el código de serialización dado comienza con rO0AB , que son los datos cifrados en base64 serializados por JAVA .

4. Usa herramientas para generar carga útil.

5. Puede volver a ver los archivos generados en el directorio.

6. El contenido generado es el siguiente.

7. Debido a que el código fuente base64 descifrará el contenido serializado, también debemos cifrarlo una vez y usar el siguiente código para recordar el cifrado. 

8. El contenido cifrado es el siguiente.

9. Pegue el código en el rango.

10. Después de hacer clic en Enviar, puede ver que el comando para llamar a la calculadora se ha especificado correctamente.

Supongo que te gusta

Origin blog.csdn.net/weixin_62808713/article/details/130042758
Recomendado
Clasificación