2011-04-27 12 views
10

द्वारा पकड़े गए हैं, मैं एक एक्सएसएस भेद्यता का एक उदाहरण ढूंढ रहा हूं जिसे एंटीएक्सएसएस एनकोडर 4.1 बीटा को रनटाइम एन्कोडर के रूप में उपयोग करके रोक दिया जाएगा (system.web/httpRuntime में सेटिंग)। मैं कुछ है कि AntiXss कार्यों ऐसेएएसपी.NET 4 <%: %> या रेजर एन्कोडिंग द्वारा प्राप्त एक्सएसएस भेद्यता के उदाहरण लेकिन एंटीएक्सएसएस

@AntiXss.JavaScriptEncode(ViewBag.UserName) 

के रूप में मैं कुछ है कि ASP.NET ब्लैकलिस्ट द्वारा मिलेगा लेकिन AntiXSS श्वेत सूची के माध्यम से यह नहीं होगा सोच रहा हूँ के लिए किसी भी स्पष्ट कॉल की आवश्यकता नहीं है पसंद करते हैं, हो सकता है जाएगा वैकल्पिक चरित्र सेट या एन्कोडिंग के साथ कुछ करने के लिए?

मैं UTF-7 कमजोरियों परीक्षण किया है, लेकिन किसी भी है कि आधुनिक ब्राउज़रों को प्रभावित नहीं दिख रहा।

उत्तर

4

कोई नहीं हैं। खैर, यह पूरी तरह से सच नहीं है, वे आधुनिक ब्राउज़र पर चलने वाले कोई भी नहीं हैं।

एसडीएल के कारण यह आवश्यक है कि एक सुरक्षित सूची का उपयोग स्वाभाविक रूप से अधिक सुरक्षित है - इसलिए यदि कोई व्यक्ति समस्याग्रस्त होने वाले चरित्र को खोजता है तो यह पहले से ही एन्कोड किया जा सकता है (आपके द्वारा कॉन्फ़िगर की गई सुरक्षित सूचियों के आधार पर)।

+1

आधुनिक ब्राउज़र पर हैं जो एन्कोडिंग को utf-7 होने के लिए निर्दिष्ट करते हैं। उस स्थिति में एचटीएमएलकोडिंग में कोई फर्क नहीं पड़ता - इसलिए वहां समस्याएं हैं। यदि आप अपने पृष्ठों को utf-7 के रूप में निर्दिष्ट नहीं करते हैं, और कोई अन्य सीएसएस भेद्यता के माध्यम से आपके पृष्ठ में एक एन्कोडिंग प्रकार इंजेक्ट करने में सक्षम है - तो यह एक और हमला वेक्टर है। –

+1

कुछ पुराने ब्राउज़रों पर अच्छी तरह से चीजें जीत जाएंगी, उदाहरण के लिए उच्चारण एस अक्षर, जहां आप ścript जा सकते हैं और यह एक स्क्रिप्ट टैग के रूप में कार्य करेगा। – blowdart

+1

i77 हालांकि डिफ़ॉल्ट रूप से utf-7 के लिए डिफ़ॉल्ट है अगर इसे पहले 4000 बाइट्स में कोई utf-7 मिलता है? इसलिए यदि आप पहले 4000 में आईई 7 में यूटीएफ -7 इंजेक्ट कर सकते हैं, तो इसे निष्पादित किया गया है। यानी 8 + इसे अवरुद्ध करता है। –

2

हम्म ... मैं नहीं अनुसरण कर रहा हूँ - antixss स्पष्ट कॉल की आवश्यकता है, जब तक कि आप अपने खुद के एनकोडर निर्दिष्ट करने और बदले में यह करने के लिए बंद बुलाने की .net 4s सुविधा का उपयोग कर की बात कर रहे हैं? उस स्थिति में इस बिंदु पर कुछ भी ज्ञात नहीं है जिसे मैं जानता हूं। चूंकि एंटीएक्सएसएस एक श्वेतसूची से काम करता है, इसलिए कोई समस्या नहीं होनी चाहिए, क्योंकि सबकुछ कुछ अक्षरों को एन्कोड किया गया है।

FYI - स्थानीय रूप से मैं utf-7 ठीक काम करने के लिए प्राप्त कर सकते हैं:

 
<HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4- 
+0

धन्यवाद - मैं ASP.NET एनकोडर के रूप में उपयोग के बारे में बात कर रहा हूँ। 4.1 के साथ आपको स्पष्ट रूप से इसमें कॉल करने की आवश्यकता नहीं है। यूटीएफ -7 हमले दिलचस्प हैं, लेकिन आपको इसे अब वर्णमाला के रूप में निर्दिष्ट करना है, इसलिए आधुनिक ब्रोवर में यह बहुत अधिक खतरा नहीं है, है ना? –

+0

मैंने मूल रूप से ऊपर एक ही बात कहा कि इस बिंदु पर कोई ज्ञात नहीं है (दूसरे उत्तर से तीन घंटे पहले) - एक कारण यह उत्तर के रूप में नहीं चुना गया था? इसके अलावा आपको एन्कोडिंग द्वारा एक्सएसएस से ही संरक्षित नहीं किया जाएगा। आईई 7 (आधुनिक या नहीं - अभी भी सभी उपयोगकर्ताओं के 5% से अधिक IE7 पर कर रहे हैं - एक हमले के लिए पर्याप्त से अधिक), UTF-7 हमले यह does not एन्कोडिंग जब स्क्रिप्ट का पता चला है बदलने के रूप में के लिए असुरक्षित है IE8 + के अनुसार करता है: http://msdn.microsoft.com/en-us/library/dd565635%28v=vs.85%29.aspx –

+0

आप मुझ पर 4.1 स्वचालित रूप से अब यह कर एक रेफरी दे सकते हैं? मैं नेट पर देख रहा हूं और शुरुआत में कुछ भी नहीं मिला। यहाँ –