Ataques de Deserialización
Los ataques de deserialización
Los ataques de deserialización son un tipo de ataque que aprovecha las vulnerabilidades en los procesos de serialización y deserialización de objetos en aplicaciones que utilizan la programación orientada a objetos (POO).
La serialización es el proceso de convertir un objeto en una secuencia de bytes que puede ser almacenada o transmitida a través de una red. La deserialización es el proceso inverso, en el que una secuencia de bytes es convertida de nuevo a un objeto. Los ataques de deserialización ocurren cuando un atacante puede manipular los datos que se están deserializando, lo que puede llevar a la ejecución de código malicioso en el servidor.
Los ataques de deserialización pueden ocurrir en diferentes tipos de aplicaciones, incluyendo aplicaciones web, aplicaciones móviles y aplicaciones de escritorio. Estos ataques pueden ser explotados de varias maneras, como:
- Modificar el objeto serializado antes de que sea enviado a la aplicación, lo que puede causar errores en la deserialización y permitir que un atacante ejecute código malicioso.
- Enviar un objeto serializado malicioso que aproveche una vulnerabilidad en la aplicación para ejecutar código malicioso.
- Realizar un ataque de “man-in-the-middle” para interceptar y modificar el objeto serializado antes de que llegue a la aplicación.
Los ataques de deserialización pueden ser muy peligrosos, ya que pueden permitir que un atacante tome el control completo del servidor o la aplicación que está siendo atacada.
Para evitar estos ataques, es importante que las aplicaciones validen y autentiquen adecuadamente todos los datos que reciben antes de deserializarlos. También es importante utilizar bibliotecas de serialización y deserialización seguras y actualizar regularmente todas las bibliotecas y componentes de la aplicación para corregir posibles vulnerabilidades.
_______________________
A continuación se os proporciona el enlace directo a la máquina de Vulnhub donde explotamos un ‘PHP Deserialization Attack‘:
____________
Al capturar la web:
Encontramos un objeto, lo url encodeamos:
Haciendo fuzzing encontramos un directorio oculto:
Hacemos fuerza bruta para enumerar archivos con extensión .bak ya que no nos sale nada en el navegador:
Mirando el código fuente intentamos ver cómo colar comandos para acceder:
Detecta que si la IP es válida, la función es válida y cambia a true, siendo true lo ejecuta el ping porque confía en el input del usuario y podemos manipular el objeto:
Al utilizar parte del código fuente cambiando el is valid en true, el one liner de la revshell y al final con el echo para que todo lo url encode y lo serialice tendríamos un objeto serializado con los datos del one liner incluido. Va a hacer un ping a nada, pero se come la bash:
Nos ponemos en escucha y:
Hemos atacado mediante una deserialización PHP, todo por modificar los valores del input.
______________
