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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
seal-security-nuget-demo-net7 — .NET 7 का seal-security-nuget-demo का फोर्क: वही CVE-2024-21907 शोषण कहानी, .NET SDK 7 में बंद ग्राहकों के लिए पुनर्लक्षित। | Kitploit
उपकरण/GitHubGitHub/seal-sec-demo-2/seal-security-nuget-demo-net7
भेद्यता विश्लेषणDevSecOpsआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षाचयनित संसाधनलैब और अभ्यास
GitHubseal-sec-demo-2/seal-security-nuget-demo-net7

seal-security-nuget-demo-net7

.NET 7 का seal-security-nuget-demo का फोर्क: वही CVE-2024-21907 शोषण कहानी, .NET SDK 7 में बंद ग्राहकों के लिए पुनर्लक्षित।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
13 महीने पहलेअभी तक समीक्षित नहीं

ब्राउज़र + 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 इंस्टॉल करने को कहा जाए।

फ़ोर्क SDK को global.json के माध्यम से 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)

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

  • सर्वर से मनमानी फ़ाइलें पढ़ सकता है
  • सर्वर-साइड रिक्वेस्ट फोर्जरी (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 से डाउनलोड करें)
  • Seal Security CLI v0.3.238 विंडोज x64 के लिए (सीधा डाउनलोड)

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

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

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


त्वरित प्रारंभ (स्थानीय Windows सर्वर)

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

# पुनर्स्थापित करें (nuget.org और Seal फीड से खींचता है — nuget.config देखें)
dotnet restore

# बनाएँ और चलाएँ
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:~
# (वैकल्पिक — ऊपर पहले से किया गया) पहले निर्भरताएँ पुनर्स्थापित करें
dotnet restore

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

# सील किए गए संस्करणों को प्राप्त करने के लिए फिर से पुनर्स्थापित करें
dotnet restore

# पैच किए गए ऐप को बनाएँ और चलाएँ
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 चरण को निर्भरताओं के इंस्टॉल होने के तुरंत बाद लेकिन अंतिम बिल्ड से पहले जोड़ा जाना चाहिए।

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

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

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

# 4. बिल्ड करें
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प्रोजेक्ट आईडी (जैसे, 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-विशिष्ट नोट्स


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

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

उपलब्ध सील किए गए NuGet पैकेज

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

पैकेजअसुरक्षित संस्करणसील किया गया संस्करणCVECVSS

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


लाइसेंस

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

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