
vRealize RCE + Privesc (CVE-2021-21975, CVE-2021-21983, CVE-0DAY-?????)
vRealize RCE + Privesc (CVE-2021-21975, CVE-2021-21983, CVE-0DAY-?????)
"Tan fácil de detener como de comprender."
"Reality Smasher" es un exploit para vRealize que aprovecha los problemas de seguridad abordados en VMSA-2021-0004 (CVE-2021-21975, CVE-2021-21983), además de una vulnerabilidad de escalada de privilegios descubierta durante las pruebas.
"Reality Smasher" explota CVE-2021-21975 para robar credenciales de la cuenta "maintenanceAdmin" de vRealize. Esto se logra alojando un listener HTTPS utilizando la clave y el certificado incluidos en este repositorio. Estas credenciales se utilizan en todas las solicitudes autenticadas posteriores. Primero, las contraseñas con hash de la cuenta de administrador se solicitan y se almacenan para su uso posterior.
A continuación, se realiza una solicitud para habilitar el servicio SSH. Esto es seguido por una sobrescritura del archivo "admin.properties" usando CVE-2021-21983. Luego se hace una solicitud para establecer la contraseña inicial del usuario administrador. Esto está permitido porque las credenciales del administrador se almacenaron en "admin.properties". Sin este archivo, vRealize cree que las credenciales nunca se han establecido y acepta la solicitud no autenticada "/security/adminpassword/initial".
Después de validar que las nuevas credenciales de administrador permiten el acceso SSH, se generan claves SSH. Luego se utiliza la vulnerabilidad de escalada de privilegios para permitir el inicio de sesión SSH como root, reiniciar el servicio sshd y agregar la clave pública a "/root/.ssh/authorized_keys.". Una vez validado el acceso SSH como root, se restauran las contraseñas hash originales y se le otorga al usuario un shell SSH interactivo como usuario root. Todas las operaciones SSH se realizan usando "golang.org/x/crypto/ssh".
Se hizo un esfuerzo significativo para garantizar la confiabilidad y robustez de este exploit. Sin embargo, este es mi primer proyecto en golang, así que use este exploit bajo su propio riesgo. Se recomienda ejecutar este exploit con verbosidad para capturar las contraseñas hash y la clave privada generada.
