this लिंक पर टाइपनाम हैडलिंग सावधानी टिप्पणी अनुभाग में यह उल्लेख किया गया है कि "TypeNameHandling should be used with caution when your application deserializes JSON from an external source. Incoming types should be validated with a custom SerializationBinder when deserializing with a value other than TypeNameHandling.None.
"। TypeNameHandling.All
के साथ serialized/deserialized अगर बाहरी स्रोत से JSON हानिकारक होगा? एक कामकाजी उदाहरण की सराहना की जाएगी।न्यूटॉन्सॉफ्ट जेसन
उत्तर
TypeNameHandling.All
के साथ deserialize और बिना serialization बाइंडर जांच json.net जेएसओएन में मेटाडेटा के रूप में आता है कि एक प्रकार का एक इंस्टेंस बनाने की कोशिश करेगा।
public class Car
{
public string Maker { get; set; }
public string Model { get; set; }
}
{
"$type": "Car",
"Maker": "Ford",
"Model": "Explorer"
} //create a Car and set property values
लेकिन एक हमलावर आप खतरनाक प्रकार है कि अपने कोड में या ढांचे में मौजूद भेज सकते हैं।
यानी hereSystem.CodeDom.Compiler.TempFileCollection
एक धारावाहिक वर्ग है जिसका उद्देश्य अस्थायी फ़ाइलों की एक सूची बनाए रखना है जो संकलन प्रक्रिया के परिणामस्वरूप होते हैं और उन्हें अब आवश्यक होने पर हटा देते हैं। यह सुनिश्चित करने के लिए कि फाइलें हटा दी गई हैं, कक्षा एक फाइनलज़र लागू करती है जिसे कचरा कलेक्टर द्वारा ऑब्जेक्ट को साफ किया जा रहा है। एक हमलावर इस वर्ग के क्रमबद्ध संस्करण का निर्माण करने में सक्षम होगा जिसने पीड़ित प्रणाली पर किसी भी फाइल में अपने आंतरिक फ़ाइल संग्रह को इंगित किया है। यह deserialization आवेदन से किसी भी बातचीत के बिना deserialization के बाद किसी बिंदु पर हटा दिया जाएगा।
[Serializable]
public class TempFileCollection
{
private Hashtable files;
// Other stuff...
~TempFileCollection()
{
if (KeepFiles) {return}
foreach (string file in files.Keys)
{
File.Delete(file);
}
}
}
{
"$type": "System.CodeDom.Compiler.TempFileCollection",
"BasePath": "%SYSTEMDRIVE",
"KeepFiles": "False",
"TempDir": "%SYSTEMROOT%"
} // or something like this, I just guessing but you got the idea
कुछ अतिरिक्त हमले गैजेट अलवारो Muñoz & ऑलेक्ज़ेंडर Mirosh की स्क्रिप्ट कागज https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf में पहचान की गई है। ये हैं:
System.Configuration.Install.AssemblyInstaller
- हमला वेक्टर: विधानसभा लोड पर पेलोड निष्पादित।System.Activities.Presentation.WorkflowDesigner
- अटैक वेक्टर: Xaml पेलोड के पार्सिंग के दौरान स्थैतिक विधि निष्पादित करें।System.Windows.ResourceDictionary
- हमला वेक्टर: एक हमलावर नियंत्रित सर्वर से यूआरएल के साथ पेलोड भेजता है, इस सर्वर Xaml पेलोड औरContentType = application/xaml+xml
और लक्ष्य सर्वर के साथ प्रतिक्रिया Xaml पेलोड के पार्स करने के दौरान स्थिर विधि वांछित निष्पादित होगा।System.Windows.Data.ObjectDataProvider
- अटैक वेक्टर: 1) अनारक्षित वस्तु के किसी भी तरीके को कॉल करें; 2) हम नियंत्रित पैरामीटर के साथ वांछित प्रकार के parametrized कन्स्ट्रक्टर को कॉल कर सकते हैं; 3) किसी भी सार्वजनिक विधि को नियंत्रित पैरामीटर के साथ स्थिर सहित कॉल करें।System.Windows.Forms.BindingSource
- अटैक वेक्टर: मनमानी गेटर कॉल।Microsoft.Exchange.Management.SystemManager.WinForms.ExchangeSettingsProvider
- अटैक वेक्टर: यह सेटर्स से नेस्टेड बाइनरीफॉर्मेटर deserialization में कूदने की अनुमति देता है।
- 1. न्यूटॉन्सॉफ्ट जेसन.Net जेसन सीरियलाइज़र
- 2. न्यूटॉन्सॉफ्ट जेसन सीरिएलाइज़र खाली ऑब्जेक्ट
- 3. न्यूटॉन्सॉफ्ट कनवर्टर से जेसन - अप्रत्याशित टोकन
- 4. न्यूटॉन्सॉफ्ट या restsharp
- 5. न्यूटॉन्सॉफ्ट JSON
- 6. 'न्यूटॉन्सॉफ्ट' नहीं मिला
- 7. न्यूटॉन्सॉफ्ट JSON - डायनामिक ऑब्जेक्ट्स
- 8. न्यूटॉन्सॉफ्ट जेसन बूलियन संपत्ति के साथ गतिशील सूची को deserialize स्ट्रिंग
- 9. न्यूटॉन्सॉफ्ट JSON.NET सुरक्षा भेद्यता कार्यान्वयन
- 10. JSON.NET DataContractJsonSerializer और न्यूटॉन्सॉफ्ट JSON serializer
- 11. न्यूटॉन्सॉफ्ट विशेषताओं को अनदेखा करते हैं?
- 12. टाइप या नेमस्पेस नाम 'न्यूटॉन्सॉफ्ट' नहीं मिला
- 13. न्यूटॉन्सॉफ्ट जेसनसेरियलाइज़र - लोअर केस गुण और शब्दकोश
- 14. जेसन
- 15. जेसन
- 16. जेसन
- 17. जेसन
- 18. जेसन
- 19. जेसन
- 20. जेसन
- 21. जेसन
- 22. जेसन
- 23. जेसन
- 24. जेसन
- 25. जेसन
- 26. जेसन
- 27. जेसन
- 28. जेसन
- 29. जेसन
- 30. जेसन - जावा ऑब्जेक्ट टू जेसन
अधिक के लिए, देखें (https://www.alphabot.com/security/blog/2017/net/How-to-configure-Json [एक संवेदनशील वेब एपीआई बनाने के लिए Json.NET को कैसे कॉन्फ़िगर करें] नेट-टू-बनाने-एक कमजोर-वेब-API.html)। – dbc
और अलवरो मुनोज और ऑलेक्ज़ेंडर मिरोश का ब्लैकहाट पेपर https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz- शुक्र- The-13th-JSON-Attacks-wp.pdf – dbc