
Nuclei template and validation scripts for detecting CVE-2019-18935, a critical .NET deserialization RCE in Telerik UI for ASP.NET AJAX, with multi-stage detection and Docker lab.
This repository contains a complete, validated Nuclei template for detecting CVE-2019-18935 (Telerik UI for ASP.NET AJAX Deserialization RCE), created for the ProjectDiscovery bounty program.
CVE-2019-18935 is a critical .NET deserialization vulnerability in Progress Telerik UI for ASP.NET AJAX (versions 2011.1.315 through 2019.3.1023) that allows unauthenticated remote code execution. This vulnerability:
.
βββ README.md # This file
βββ BOUNTY_PLAN.md # Original planning document
βββ nuclei-templates/
β βββ cves/
β βββ 2019/
β βββ CVE-2019-18935.yaml # Main Nuclei template
βββ docker-environment/ # Vulnerable test environment
β βββ Dockerfile
β βββ docker-compose.yml
β βββ web.config
β βββ Default.aspx
β βββ README.md
βββ scripts/ # Exploitation and validation scripts
β βββ RAU_crypto.py # Encryption helper module
β βββ telerik_version_detect.py # Version detection tool
β βββ telerik_exploit_poc.py # POC validation script
βββ documentation/ # Technical documentation
β βββ TESTING.md # Testing guide
β βββ METHODOLOGY.md # Detection methodology
βββ debug-output/ # Debug logs and results (to be generated)
βββ payloads/ # Test payloads (optional)
β
Complete POC Implementation - Not just version detection
β
Multi-Stage Validation - Handler discovery + version check + exploitation proof
β
Low False Positives - AND condition across multiple matchers
β
Non-Destructive - Safe testing without actual exploitation
β
Comprehensive Extraction - Version info, error details, detection stages
β
Well Documented - Full methodology and testing guides included
# Install Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Install Python dependencies (for validation scripts)
pip3 install -r requirements.txt
# Install Docker (for test environment)
# See: https://docs.docker.com/get-docker/
# Test against a single target
nuclei -t nuclei-templates/cves/2019/CVE-2019-18935.yaml \
-u http://target.com \
-v
# Test with debug output
nuclei -t nuclei-templates/cves/2019/CVE-2019-18935.yaml \
-u http://target.com \
-debug -v
# Test against multiple targets
nuclei -t nuclei-templates/cves/2019/CVE-2019-18935.yaml \
-l targets.txt \
-json -o results.json
# Navigate to docker environment
cd docker-environment
# Important: Obtain Telerik.Web.UI.dll first (see docker-environment/README.md)
# Place the DLL in this directory
# Build and start
docker-compose up -d
# Verify it's running
curl http://localhost:8080/Telerik.Web.UI.WebResource.axd?type=rau
# Test the template
nuclei -t nuclei-templates/cves/2019/CVE-2019-18935.yaml \
-u http://localhost:8080 \
-debug -v \
2>&1 | tee debug-output/test-run.log
[CVE-2019-18935] [http] [critical] http://localhost:8080/Telerik.Web.UI.WebResource.axd
[EXTRACTED]
telerik_version: 2017.2.503.40
detection_stage: Handler detected in request 1, Version in request 2, Deserialization in request 3
error_details: Exception at Telerik.Web.UI...
cd scripts
# Detect Telerik version and check vulnerability
python3 telerik_version_detect.py http://target.com
# Output:
# [+] Handler found: http://target.com/Telerik.Web.UI.WebResource.axd?type=rau
# [+] Detected version: 2017.2.503
# [!] VULNERABLE: Version in range 2011.1.315 - 2019.3.1023
# Run non-destructive POC
python3 telerik_exploit_poc.py http://target.com/Telerik.Web.UI.WebResource.axd?type=rau
# Output:
# [+] Handler is accessible
# [+] Upload capability confirmed
# [+] Deserialization processing detected
# [!] VULNERABILITY: CONFIRMED
The template uses a three-stage detection process:
Stage 1 - Handler Discovery:
/Telerik.Web.UI.WebResource.axd?type=rauStage 2 - Version Enumeration:
rauPostData parameterStage 3 - Exploitation Proof:
__type deserialization markerAll three stages must succeed for positive detection (AND condition).
See documentation/METHODOLOGY.md for complete technical details.
β οΈ Important: This template is tagged as intrusive because it:
Only use this template against:
Legal compliance is your responsibility.
curl http://target/Telerik.Web.UI.WebResource.axd?type=raupython3 scripts/telerik_exploit_poc.py <url>nuclei -t template.yaml -u <url> -debug