
.NET फॉर्मेटर्स की विविधता के लिए डिसीरियलाइज़ेशन पेलोड जनरेटर
YSoNet मूल YSoSerial.Net का एक फोर्क है, जिसे वर्तमान में @irsdl द्वारा अनुरक्षित किया जाता है।
असुरक्षित .NET ऑब्जेक्ट डिसीरियलाइज़ेशन का शोषण करने वाले पेलोड उत्पन्न करने के लिए एक proof-of-concept टूल।
YSoNet (पहले ysoserial.net के नाम से जाना जाता था) सामान्य .NET लाइब्रेरीज़ में खोजी गई उपयोगिताओं और property-oriented programming "गैजेट चेन" का एक संग्रह है, जो सही परिस्थितियों में, ऑब्जेक्ट्स का असुरक्षित डिसीरियलाइज़ेशन करने वाले .NET अनुप्रयोगों का शोषण कर सकता है। आप इसे एक कमांड और एक गैजेट चेन देते हैं; यह कमांड को चेन में लपेटता है और परिणाम को stdout पर सीरियलाइज़ करता है। जब कोई कमजोर अनुप्रयोग उस डेटा को डिसीरियलाइज़ करता है, तो चेन चलती है और आपकी कमांड होस्ट पर निष्पादित होती है।
कमजोरी अनुप्रयोग द्वारा असुरक्षित डिसीरियलाइज़ेशन करने में है, न कि classpath पर गैजेट होने में। यह परियोजना Chris Frohoff के ysoserial प्रोजेक्ट से प्रेरित है।
YSoNet के गैजेट और प्लगइन कैटलॉग को डिसीरियलाइज़ेशन ब्लॉकलिस्ट में न बदलें। कैटलॉग में हर निजी, भविष्य, अनुप्रयोग-विशिष्ट, या अलग ढंग से रचित चेन शामिल नहीं हो सकती, इसलिए यहाँ सूचीबद्ध चीज़ों को ब्लॉक करना असुरक्षित डिसीरियलाइज़र को सुरक्षित नहीं बनाता। यह झूठा आश्वासन पैदा कर सकता है जबकि केवल हमले में देरी करता है।
यदि आप किसी अनुप्रयोग को सख्त बनाने के लिए इस रिपॉजिटरी की समीक्षा कर रहे हैं, तो गैजेट या प्लगइन्स का निरीक्षण करने से पहले रक्षकों और समीक्षकों के लिए सुरक्षा मार्गदर्शन पढ़ें। लक्ष्य असुरक्षित डिसीरियलाइज़ेशन को हटाना या fixed-schema, data-only डिज़ाइन पर जाना है। एक सख्त allowlist अस्थायी रोकथाम है जब माइग्रेशन तुरंत नहीं हो सकता; denylist उपचार नहीं है।
पूर्ण दस्तावेज़ीकरण docs/ में है:
इस टूल में नए हैं? आरंभ करने का सबसे आसान तरीका इंटरैक्टिव मोड है: एक मेनू-संचालित विज़ार्ड जो गैजेट और प्लगइन्स को सूचीबद्ध करता है, प्रत्येक सेटिंग समझाता है, और आपके लिए पेलोड बनाता है - पहले फ्लैग याद रखने की आवश्यकता नहीं।
.\ysonet.exe -i
(interactive, wizard, और --interactive भी काम करते हैं।) आपको पहले ysonet.exe चाहिए - आरंभ करना देखें। पूर्ण विज़ार्ड वॉकथ्रू भी वहाँ है।
./ysonet.exe -f Json.Net -g ObjectDataProvider -o raw -c "calc" -t
सभी विकल्प ysonet.exe --fullhelp से देखें, और प्रति-गैजेट या प्रति-प्लगइन सहायता -g NameHere -help या -p NameHere -help से। अधिक जानकारी उपयोग और उदाहरण में।
Windows, Visual Studio 2022 या Build Tools से MSBuild (".NET desktop development" वर्कलोड), और nuget.exe की आवश्यकता है। हर प्रोजेक्ट .NET Framework 4.7.2 को लक्षित करता है।
git clone https://github.com/irsdl/ysonet
cd ysonet
nuget restore ysonet.sln
msbuild ysonet.sln -p:Configuration=Release # या Debug
.\ysonet\bin\Release\ysonet.exe -h
ysonet.exe को string-encrypt करता है ताकि एंटीवायरस झूठे सकारात्मक कम हों; पेलोड बाइट्स अपरिवर्तित रहते हैं। इसे -p:ObfuscateRelease=false से छोड़ें। Debug कभी obfuscate नहीं होता।Debug बिल्ड तेज़ परीक्षण सूट स्वचालित रूप से चलाता है, और विफल परीक्षण बिल्ड को विफल कर देता है (इसे -p:RunYsonetTests=false से छोड़ें)। व्यापक FULL सूट opt-in है:
.\ysonet\bin\Debug\ysonet.Tests.exe --full
दोनों सुरक्षित हैं: कमांड self-closing हैं या कभी निष्पादित नहीं होते, और लिसनर केवल loopback हैं। विवरण और अन्य opt-in स्तर: आरंभ करना और CONTRIBUTING.md।
ysonet.exe PowerShell में विकल्पों, गैजेट नामों (-g), प्लगइन नामों (-p), फॉर्मेटर (-f), और आउटपुट प्रारूपों (-o) के लिए टैब पूर्णता कर सकता है। पूर्णता मान टूल से लाइव आते हैं, इसलिए गैजेट और प्लगइन जोड़े जाने पर वे सही रहते हैं।
इसे वर्तमान सत्र के लिए सक्षम करें (किसी भी PowerShell में काम करता है, डिस्क पर कुछ नहीं लिखा जाता, execution policy से प्रभावित नहीं होता):
.\ysonet.exe completion powershell | Out-String | Invoke-Expression
फिर Tab दबाएँ, उदाहरण के लिए .\ysonet.exe -g A फिर Tab।
PowerShell 7+ (pwsh) में इसे स्थायी बनाने के लिए:
.\ysonet.exe completion install # फिर reload करें: . $PROFILE
Install केवल PowerShell 7+ (pwsh) को लक्षित करता है, क्योंकि Windows PowerShell 5.1 अक्सर AllSigned या Restricted होता है और अहस्ताक्षरित प्रोफ़ाइल लोड नहीं कर सकता; उस स्थिति में उपरोक्त प्रति-सत्र लाइन का उपयोग करें (इसे किसी नीति परिवर्तन की आवश्यकता नहीं है)। क्या पता चला है यह देखने के लिए ysonet.exe completion status चलाएँ, और इसे हटाने के लिए ysonet.exe completion uninstall। अधिक विवरण tools/completions/ में।
यह सॉफ़्टवेयर पूर्णतः शैक्षणिक अनुसंधान और प्रभावी रक्षात्मक तकनीकों के विकास के उद्देश्यों के लिए बनाया गया है, और स्पष्ट रूप से अधिकृत स्थितियों को छोड़कर सिस्टम पर हमला करने के लिए उपयोग करने का इरादा नहीं है। परियोजना अनुरक्षक सॉफ़्टवेयर के दुरुपयोग के लिए ज़िम्मेदार या उत्तरदायी नहीं हैं। ज़िम्मेदारी से उपयोग करें।
यह सॉफ़्टवेयर एक व्यक्तिगत परियोजना है और किसी भी कंपनी से संबंधित नहीं है, जिसमें परियोजना स्वामी और योगदानकर्ताओं के नियोक्ता शामिल हैं।
आधिकारिक रिपॉजिटरी: https://github.com/irsdl/ysonet
master से एक ब्रांच बनाएँ।YOUR_USER और YOUR_BRANCH बदलें):
https://github.com/irsdl/ysonet/compare/master...YOUR_USER:ysonet:YOUR_BRANCHसंक्षिप्त संस्करण के लिए CONTRIBUTING.md देखें। गैजेट, प्लगइन, या सीरियलाइज़र जोड़ रहे हैं? docs/ARCHITECTURE.md में कोड मैप से शुरू करें, और परीक्षण को पास कराने के लिए उसे कभी कमजोर न करें।
YSoNet का विकास और अनुरक्षण Soroush Dalili (@irsdl) द्वारा किया जाता है। YSoSerial.Net का मूल विकास Alvaro Muñoz (@pwntester) द्वारा किया गया था। पूर्ण गैजेट और प्लगइन श्रेय के लिए ysonet.exe --credit चलाएँ, या श्रेय देखें। अंतर्निहित मुद्दों के बारे में अधिक जानने के लिए, संदर्भ देखें।
YSoNet MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। लाइसेंस Alvaro Muñoz के लिए मूल ysoserial.net कॉपीराइट नोटिस और Soroush Dalili के लिए YSoNet कॉपीराइट नोटिस को संरक्षित करता है। दोनों नोटिस और MIT अनुमति नोटिस सॉफ़्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में बने रहने चाहिए।