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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/isecuritytw/seal-security-nuget-demo-net7
भेद्यता विश्लेषणDevSecOpsआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षाचयनित संसाधन
GitHubisecuritytw/seal-security-nuget-demo-net7

seal-security-nuget-demo-net7

.NET 7 फोर्क ऑफ seal-security-nuget-demo: वही CVE-2024-21907 एक्सप्लॉइट कहानी, .NET SDK 7 पर लॉक किए गए ग्राहकों के लिए पुनः लक्षित।

रिपॉजिटरी देखें
3 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

ब्राउज़र + CLI डेमो (NuGet/C#) — .NET 7 संस्करण

.NET 7 फोर्क क्यों?

यह कैनोनिकल seal-security-nuget-demo (जो net9.0 को लक्षित करता है) का पुनर्लक्षित फोर्क है। एक्सप्लॉइट कहानी, कंट्रोलर, और सील्ड-पैकेज सूची समान हैं — केवल TargetFramework भिन्न है।

यह इसलिए मौजूद है क्योंकि अधिकांश एंटरप्राइज़ ग्राहक मांग पर नवीनतम .NET SDK पर नहीं जा सकते। .NET 7 ने 14 मई, 2024 को समर्थन-समाप्ति प्राप्त की, लेकिन वास्तविक प्रोडक्शन वातावरण अभी भी संगतता, प्रमाणन, या परिचालन कारणों से इस पर चलते हैं। यह ठीक वही मामला है जिसके लिए Seal Security डिज़ाइन किया गया है: जब कोई ग्राहक प्रमुख संस्करण अपग्रेड नहीं ले सकता (या नहीं लेना चाहता), Seal कमजोर निर्भरता को उसी स्थान पर समान संस्करण के अंतर्गत पैच करता है, बिना किसी सार्वजनिक API परिवर्तन और बिना ग्राहक के ऐप में कोई कोड संपादन के। यह डेमो उस चर्चा को ग्राहक के वास्तविक स्टैक पर होने देता है, बजाय उनसे पहले net8/net9 इंस्टॉल करने के लिए कहने के।

फोर्क global.json के माध्यम से SDK को 7.0.x पर पिन करता है ताकि डेमो के दौरान आकस्मिक अपग्रेड न आ सकें।


अवलोकन

यह डेमो एप्लिकेशन एक सरल ASP.NET Core स्वागत पृष्ठ है जो उपयोगकर्ता इनपुट को कॉन्फ़िग ऑब्जेक्ट के रूप में पार्स करने के लिए Newtonsoft.Json 12.0.2 का उपयोग करता है। ऐप में एक नाम फ़ील्ड है — अपना नाम टाइप करें, Go पर क्लिक करें, और यह "Welcome, alice!" प्रदर्शित करता है। पर्दे के पीछे यह इनपुट को Newtonsoft.Json के JsonConvert.DeserializeObject<NestedConfig>() के माध्यम से पास करता है। बस इतना ही — एक लोकप्रिय JSON लाइब्रेरी का पूरी तरह से मानक उपयोग।

समस्या यह है कि Newtonsoft.Json 12.0.2 (और 13.0.1 से पहले के संस्करण) में CVE-2024-21907 है — एक उच्च गंभीरता वाली Denial of Service भेद्यता जिसका CVSS स्कोर 7.5 (HIGH) है। यह डेमो दिखाता है कि Seal Security बिना प्रमुख संस्करण अपग्रेड की आवश्यकता के भेद्यता को स्थान पर कैसे पैच करता है।


भेद्यता: CVE-2024-21907

भेद्यता क्या है?

Newtonsoft.Json की JsonConvert.DeserializeObject<T>() विधि का शोषण गहराई से नेस्टेड JSON पेलोड बनाकर किया जा सकता है। टाइप किए गए ऑब्जेक्ट (POCO) में डिसीरियलाइज़ करते समय, लाइब्रेरी का JsonSerializerInternalReader वास्तव में पुनरावर्ती कॉल करता है (CreateValueInternal → CreateObject → PopulateObject → SetPropertyValue → CreateValueInternal) जो स्टैक ओवरफ्लो का कारण बनता है, जिससे एप्लिकेशन क्रैश हो जाता है (Denial of Service)।

एक्सप्लॉइट कैसे काम करता है

ऐप उपयोगकर्ता इनपुट लेता है और इसे Newtonsoft.Json के माध्यम से पार्स करता है। यदि इनपुट एक URL है, तो ऐप पहले सामग्री प्राप्त करता है — एक यथार्थवादी पैटर्न जो कॉन्फ़िग लोडर, API परीक्षक, और वेबहुक रिसीवर द्वारा उपयोग किया जाता है:

root@kitploit:~
public class NestedConfig
{
    [JsonProperty("n")]
    public NestedConfig? N { get; set; }
}

var config = JsonConvert.DeserializeObject<NestedConfig>(name);

सामान्य इनपुट: alice टाइप करें → "Welcome, alice!" प्रदर्शित होता है

एक्सप्लॉइट: इस URL को नाम फ़ील्ड में पेस्ट करें और Go पर क्लिक करें:

root@kitploit:~
https://raw.githubusercontent.com/seal-sec-demo-2/json-payload/main/payload.json

ऐप पता लगाता है कि यह एक URL है, json-payload प्राप्त करता है (गहराई से नेस्टेड JSON {"n":{"n":{...}}}), और इसे Newtonsoft.Json के माध्यम से पुनरावर्ती NestedConfig वर्ग में डिसीरियलाइज़ करता है — जिससे स्टैक ओवरफ्लो ट्रिगर होता है।

JsonSerializerInternalReader प्रत्येक नेस्टिंग स्तर के लिए CreateValueInternal → CreateObject → PopulateObject → SetPropertyValue के माध्यम से पुनरावृत्ति करता है। लगभग 5,000 स्तरों की गहराई पर, यह थ्रेड स्टैक को समाप्त कर देता है और एप्लिकेशन StackOverflowException के साथ क्रैश हो जाता है — प्रक्रिया तुरंत मर जाती है (कोई सुंदर त्रुटि हैंडलिंग संभव नहीं है)।

वास्तविक-विश्व प्रभाव

इस भेद्यता के साथ, हमलावर यह कर सकते हैं:

  • एप्लिकेशन को क्रैश करना दुर्भावनापूर्ण JSON पेलोड भेजकर
  • Denial of Service उत्पन्न करना जो सभी उपयोगकर्ताओं को प्रभावित करता है
  • सर्वर संसाधनों को समाप्त करना बार-बार शोषण के माध्यम से
  • रेट लिमिटिंग को बायपास करना क्योंकि प्रत्येक अनुरोध प्रक्रिया को क्रैश करता है

Newtonsoft.Json 13.0.1 में अपग्रेड क्यों नहीं करते?

सार्वजनिक रूप से उपलब्ध फिक्स के लिए संस्करण 13.0.1 में अपग्रेड करना आवश्यक है। हालाँकि, प्रमुख संस्करणों में अपग्रेड करने से अक्सर निम्नलिखित समस्याएं आती हैं:

  • ब्रेकिंग API परिवर्तन सीरियलाइज़ेशन व्यवहार में
  • संगतता समस्याएं अन्य लाइब्रेरीज़ के साथ जो विशिष्ट संस्करणों की अपेक्षा करती हैं
  • व्यापक परीक्षण आवश्यकताएं सभी सीरियलाइज़ेशन/डिसीरियलाइज़ेशन कोड पथों के लिए
  • रनटाइम व्यवहार परिवर्तन का जोखिम प्रोडक्शन में

यह "बस अपग्रेड करें" फिक्स को एक परियोजना बनाता है जो आसानी से डेवलपर समय के सप्ताह ले सकती है — इस बीच भेद्यता खुली रहती है।

Seal Security इसे कैसे ठीक करता है

Seal का पैच किया गया संस्करण (12.0.2-sp1) बिना किसी सार्वजनिक API को बदले पुनरावृत्ति गहराई सुरक्षा जोड़ता है। पैच:

  1. असीमित पुनरावृत्ति को रोकने के लिए डिफ़ॉल्ट MaxDepth सीमाएं जोड़ता है
  2. स्टैक ओवरफ्लो के बजाय उचित अपवादों के साथ गहरी नेस्टिंग को सुंदरता से संभालता है
  3. कोई सार्वजनिक API नहीं बदलता — मौजूदा कोड बिना संशोधन के काम करता रहता है

यह वही शमन रणनीति है जो Newtonsoft.Json 13.0.1 में लागू की गई है, जिसे 12.0.2 में ड्रॉप-इन प्रतिस्थापन के रूप में बैकपोर्ट किया गया है।


अन्य कमजोर निर्भरताएं

यह डेमो अन्य कमजोर NuGet पैकेज भी शामिल करता है जिन्हें Seal Security पैच कर सकता है:

log4net 2.0.5 - CVE-2018-1285 (CVSS 9.8 CRITICAL)

log4net के XML कॉन्फ़िगरेशन पार्सिंग में XML External Entity (XXE) भेद्यता। एक हमलावर जो log4net कॉन्फ़िगरेशन फ़ाइल को नियंत्रित कर सकता है, वह यह कर सकता है:

  • सर्वर से मनमानी फ़ाइलें पढ़ना
  • Server-Side Request Forgery (SSRF) करना
  • Denial of Service उत्पन्न करना

System.Net.Http पर नोट: कैनोनिकल net9 डेमो CVE-2017-0249 के लिए एक कमजोर System.Net.Http 4.3.0 संदर्भ भी भेजता है। हमने इसे इस net7 फोर्क से हटा दिया है क्योंकि .NET 7 पर System.Net.Http BCL का हिस्सा है और स्टैंडअलोन पैकेज संदर्भ एक अवशिष्ट मेटा-पैकेज है — इसके साथ dotnet add package --source <local-nupkg> के ज्ञात एज केस हैं, जो ठीक वैसे ही है जैसे Seal CLI सील्ड संस्करण लागू करता है। इसे हटाने से seal fix चरण डेमो की कहानी बदले बिना विश्वसनीय हो जाता है (HttpClient अभी भी ठीक काम करता है; रनटाइम इसे प्रदान करता है)।


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

  • .NET 7.0 SDK (Microsoft से डाउनलोड करें)
  • Windows x64 के लिए Seal Security CLI v0.3.238 (सीधा डाउनलोड)

    Windows CLI बाइनरी v0.3.238 के बाद बंद कर दी गई थीं। v0.3.238 Windows पर NuGet उपचार के लिए पूरी तरह कार्यात्मक है।

  • Seal Security टोकन (Seal डैशबोर्ड से)

विस्तृत Windows Server इंस्टॉल + रन गाइड README-WINDOWS-SERVER.md में है। नीचे दिया गया Quick Start समान चरणों को संक्षिप्त रूप में कवर करता है।


Quick Start (स्थानीय Windows Server)

1. पर्यावरण चर सेट करें

PowerShell:

root@kitploit:~
$env:SEAL_TOKEN = "your-seal-token-here"
$env:SEAL_PROJECT = "nuget-demo-net7"

2. कमजोर ऐप चलाएं (Seal से पहले)

root@kitploit:~
cd seal-security-nuget-demo-net7

# Restore (nuget.org और Seal फ़ीड से खींचता है — nuget.config देखें)
dotnet restore

# Build और run
dotnet build
dotnet run

http://localhost:5000 खोलें — ऐप कमजोर निर्भरताओं के साथ चल रहा है।

सामान्य इनपुट के साथ परीक्षण करें

नाम फ़ील्ड में alice टाइप करें, Go पर क्लिक करें। आपको देखना चाहिए: "Welcome, alice!"

एक्सप्लॉइट पेलोड के साथ परीक्षण करें

निम्न URL को नाम फ़ील्ड में पेस्ट करें और Go पर क्लिक करें:

root@kitploit:~
https://raw.githubusercontent.com/seal-sec-demo-2/json-payload/main/payload.json

अनपैच किया गया परिणाम: ब्राउज़र एक त्रुटि / कनेक्शन रीसेट दिखाता है — ऐप JsonSerializerInternalReader.CreateValueInternal में StackOverflowException के साथ क्रैश हो गया। प्रक्रिया मर चुकी है।

3. Seal Security फिक्स लागू करें

root@kitploit:~
# (वैकल्पिक — ऊपर पहले से किया गया) पहले निर्भरताएं restore करें
dotnet restore

# भेद्यताओं को ठीक करने के लिए Seal CLI चलाएं
seal fix . --mode remote -v

# सील्ड संस्करण खींचने के लिए फिर से restore करें
dotnet restore

# पैच किए गए ऐप को build और run करें
dotnet build
dotnet run

ऐप अब पैच किए गए संस्करणों (Newtonsoft.Json 12.0.2-sp1, log4net 2.0.5-sp1) का उपयोग करता है।

पैच किया गया परिणाम: समान एक्सप्लॉइट URL पेस्ट करें → पृष्ठ "Blocked by Seal patch: MaxDepth of 64 has been exceeded." दिखाता है — Newtonsoft.Json के पैच किए गए पुनरावृत्ति सीमा ने गहरे पेलोड को अस्वीकार कर दिया। सर्वर सामान्य रूप से चलता रहता है।

4. पैच किए गए संस्करण सत्यापित करें

root@kitploit:~
dotnet list package

आपको Seal Security पैच इंगित करने वाले -sp1 प्रत्यय वाले पैकेज देखने चाहिए।


Seal Security CLI एकीकरण

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

CLI चरण को निर्भरताओं के इंस्टॉल होने के तुरंत बाद लेकिन अंतिम build से पहले जोड़ा जाना चाहिए।

root@kitploit:~
# 1. निर्भरताएं restore करें
dotnet restore

# 2. <--- Seal CLI यहाँ चलाएं
$env:SEAL_TOKEN = "your-seal-token-here"
$env:SEAL_PROJECT = "nuget-demo-net7"
seal fix . --mode remote -v

# 3. फिर से restore करें (सील्ड संस्करण प्राप्त करने के लिए)
dotnet restore

# 4. Build
dotnet build

फिक्स मोड

मोडविवरण
allसभी उपलब्ध फिक्स स्वचालित रूप से लागू करें
remoteकेवल Seal UI में अनुमोदित फिक्स लागू करें
localकेवल .seal-actions.yml में परिभाषित फिक्स लागू करें

इस रिपो में .seal-actions.yml पहले से ही local मोड के लिए तीन सील्ड ओवरराइड सूचीबद्ध करता है, इसलिए seal fix . --mode local -v ऑफ़लाइन काम करता है (आर्टिफैक्ट सर्वर के लिए अभी भी टोकन की आवश्यकता होती है)।


आर्टिफैक्ट सर्वर कॉन्फ़िगर करना

nuget.config सेटअप

nuget.config पर्यावरण चर के साथ Seal Security का उपयोग करने के लिए पूर्व-कॉन्फ़िगर किया गया है:

root@kitploit:~
<configuration>
  <packageSources>
    <add key="Seal" value="https://nuget.sealsecurity.io/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <Seal>
      <add key="Username" value="%SEAL_PROJECT%" />
      <add key="ClearTextPassword" value="%SEAL_TOKEN%" />
    </Seal>
  </packageSourceCredentials>
</configuration>

आवश्यक पर्यावरण चर

चरविवरण
SEAL_TOKENआपका Seal Security एक्सेस टोकन
SEAL_PROJECTप्रोजेक्ट ID (जैसे, nuget-demo-net7)

नेटवर्क अनुमति सूची (प्रतिबंधित वातावरण के लिए)

Seal CLI को आउटबाउंड HTTPS (TCP 443) की आवश्यकता होती है:

  • cli.sealsecurity.io — स्कैन / फिक्स कॉन्फ़िगरेशन
  • authorization.sealsecurity.io — टोकन सत्यापन
  • nuget.sealsecurity.io — सील्ड .nupkg डाउनलोड
  • d2zko6i8myndc4.cloudfront.net — CDN जो वास्तविक सील्ड आर्टिफैक्ट प्रदान करता है (.sealsecurity.io होस्टनाम यहाँ रीडायरेक्ट होते हैं)
  • api.nuget.org / मानक nuget.org एंडपॉइंट — गैर-सील्ड निर्भरताओं के लिए

फ़ायरवॉल खोलने के बाद PowerShell से सत्यापित करें:

root@kitploit:~
Test-NetConnection cli.sealsecurity.io -Port 443
Test-NetConnection authorization.sealsecurity.io -Port 443
Test-NetConnection nuget.sealsecurity.io -Port 443
Test-NetConnection d2zko6i8myndc4.cloudfront.net -Port 443

सभी को TcpTestSucceeded: True रिपोर्ट करना चाहिए।


.NET 7-विशिष्ट नोट

आइटमयह क्यों मायने रखता है
global.json SDK को 7.0.x पर rollForward: latestFeature के साथ पिन करता हैसाइड-बाय-साइड net8/net9 वाली मशीनों को डेमो के बीच में SDK बदलने से रोकता है।
System.Configuration.ConfigurationManager को 7.0.0 पर पिन किया गयाकैनोनिकल net9 डेमो 8.0.0 का उपयोग करता है, जो केवल net8 को लक्षित करता है और net7 पर restore करने में विफल रहता है। 7.0.0 में वही API सतह है जो log4net को चाहिए।
csproj में NU1701 दबाया गयाlog4net 2.0.5 एक विरासती net4x TFM का विज्ञापन करता है जिसे .NET 7 रनटाइम पर स्वीकार करता है लेकिन restore पर चेतावनी देता है। चेतावनी कॉस्मेटिक है; दमन डेमो के दौरान build आउटपुट को साफ रखता है।
Windows x64 के लिए Seal CLI v0.3.238Windows बाइनरी के साथ अंतिम रिलीज़; NuGet उपचार के लिए पूरी तरह कार्यात्मक। Windows बाइनरी इस संस्करण के बाद बंद कर दी गई थीं, इसलिए नए रिलीज़ का सुझाव न दें।

डेमो वार्तालाप बिंदु

  • कोई कोड परिवर्तन नहीं — एप्लिकेशन कोड अनपैच किए गए संस्करण के समान है। केवल NuGet पैकेज संस्करण बदला गया था।
  • समान API — 12.0.2-sp1 12.0.2 के लिए बाइनरी-संगत ड्रॉप-इन है।
  • ग्राहक के वास्तविक स्टैक को लक्षित करता है — net7.0, net9.0 नहीं। कोई SDK अपग्रेड आवश्यक नहीं।
  • गहराई में सुरक्षा — ट्रांज़िटिव निर्भरताओं सहित सभी कोड पथों की रक्षा करता है।
  • सार्वजनिक पैच — सभी पैच ओपन सोर्स और ऑडिट योग्य हैं।
  • EOL .NET अभी भी पैच होता है — यह मूल मूल्य है: Microsoft अब .NET 7 के लिए सुरक्षा अपडेट नहीं भेजता, लेकिन Seal ग्राहक के मौजूदा निर्भरता सतह को सुरक्षित रखता है।

उपलब्ध सील्ड NuGet पैकेज

इस डेमो द्वारा उपयोग किए गए पैकेज:

पैकेजकमजोर संस्करणसील्ड संस्करणCVECVSS
Newtonsoft.Json12.0.212.0.2-sp1CVE-2024-219077.5 HIGH
log4net2.0.52.0.5-sp1CVE-2018-12859.8 CRITICAL

Seal फ़ीड से उपलब्ध अन्य सील्ड NuGet पैकेज (इस डेमो में नहीं, संदर्भ के लिए सूचीबद्ध):

पैकेजकमजोर संस्करणसील्ड संस्करणCVECVSS
log4net2.0.02.0.0-sp1CVE-2018-12859.8 CRITICAL
System.Net.Http4.3.04.3.0-sp1CVE-2017-02497.3 HIGH
Snappier1.1.01.1.0-sp1CVE-2023-286387.0 HIGH
jQuery.Validation1.17.01.17.0-sp1CVE-2021-212527.5 HIGH

लाइसेंस

MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें।

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