
PoC de CVE-2020-0688
Esta prueba de concepto para CVE-2020-0688 incluye funciones para el escaneo y la explotación de una instancia vulnerable de Exchange local.
scan - proporciona las credenciales y la información del objetivo para obtener las cookies necesarias para la explotación y las guarda en 'cookies.txt'. También comprueba la exposición del servicio Exchange Control Panel (ECP) del servidor Exchange objetivo, intenta autenticarse en este servicio y verifica que coincida el valor VIEWSTATEGENERATOR correspondiente. Si la autenticación es exitosa, se mostrará el valor de la cookie de sesión para la creación del payload serializado.
generate - proporciona el valor de la cookie de sesión obtenido de la función 'scan', así como un comando para la ejecución de código. Esto formateará tu entrada para ysoserial.net y generará un payload serializado para la ejecución de código. Guarda la salida de ysoserial en un archivo como 'payload.txt'.
exploit - toma la entrada de tu archivo de cookies obtenido al usar la función 'scan' con autenticación exitosa y codifica en URL el contenido de tu archivo de payload. El exploit realiza la solicitud autenticada adecuada para desencadenar la ejecución de código contra instancias vulnerables de Exchange local.
$./ecp_slap
scan - Scan an Exchange host and obtain cookies needed for exploitation:
./ecp_slap scan -t 10.1.1.5 -d corp.local -u admin -p badpassword
./ecp_slap scan -t mail.corp.com -d CORP -u admin -p badpassword
generate - Generate the ysoserial.net command for payload creation:
./ecp_slap generate -s [ASP.NET_SessionId] -c [COMMAND]
./ecp_slap generate -s 81c35474-6a73-4a1c-af45-b3985e7d7ad1 -c "echo test > C:/temp/test.txt"
exploit - Exploitation of a vulnerable Exchange server:
./ecp_slap exploit -t 192.168.5.22 -c cookies.txt -p payload.txt
./ecp_slap exploit -t mail.corp.com -c cookies.txt -p payload.txt
Si has verificado que la versión de Exchange local que intentas explotar:
pero aún así no puedes verificar la ejecución exitosa de código, considera ejecutar comandos simples para evaluar si la ejecución de código está funcionando, como:
Comienza con el aviso de seguridad de MSRC que incluirá detalles sobre los parches y las versiones vulnerables de Exchange local. Cruzar los parches con los números de compilación de Exchange de Microsoft ayudará a determinar la vulnerabilidad. Para reproducir manualmente la explotación de esta vulnerabilidad, sigue el increíble artículo de ZDI.
Si eliges compilar este proyecto desde el código fuente, en lugar de obtener la versión compilada, configurar tu entorno Go suele ser tan fácil como instalar GoLang y establecer la variable de entorno adecuada. Los pasos para hacerlo están documentados aquí.