SQL इंजेक्शन विलक्षणका लागि परीक्षण

SQL इन्जेक्शन आक्रमणले वेब अनुप्रयोगहरूमा ठूलो जोखिम ल्याउँछ जसले गतिशील सामग्री उत्पन्न गर्न डेटाबेस ब्याकइन्डमा निर्भर गर्दछ। यस प्रकारको आक्रमणमा, हैकरले वेब अनुप्रयोगलाई हेरफेर गर्ने प्रयासमा आफ्नो आफ्नै SQL आदेशहरू डेटाबेसद्वारा जारी गर्नेहरूलाई इन्जेक्शन गर्न प्रयास गर्दछ। उदाहरणको लागि, SQL इंजेक्शन आक्रमण डेटाबेसमा लेख हेर्नुहोस्। यस लेखमा, हामीले तपाईले तपाइँको वेब अनुप्रयोगहरू परीक्षण गर्न सक्नुहुनेछ कि धेरै तरिकाहरू हेर्न सक्दछ कि तिनीहरू SQL इंजेक्शन आक्रमणका लागि हानिकारक छन् कि भनेर निश्चित गर्नुहोस्।

स्वचालित SQL इंजेक्शन स्क्यानिङ

एक संभावनाले स्वचालित वेब अनुप्रयोग हानिकारक स्क्यानर, जस्तै हिमाचल प्रदेशको वेबइन्स्पेक्ट, आईबीएमको एप्ससिङ्क वा सेन्जिइकको ज्वलन्त प्रयोग गर्दैछ। यी उपकरणहरूले सबैलाई सम्भावित SQL इंजेक्शन हानिकारकहरूको लागि तपाईंको वेब अनुप्रयोगहरू विश्लेषण गर्न सजिलो, स्वचालित तरिकाहरू प्रस्ताव गर्दछ। यद्यपि, तिनीहरू धेरै महान् छन्, प्रति सीट $ 25,000 सम्म।

म्यानुअल SQL इन्जेक्शन टेस्ट

के गरीब अनुप्रयोग विकासकर्ता के हो? तपाइँ वेब ब्राउजर भन्दा बढी केहि प्रयोग गरेर SQL इंजेक्शन हानिकारकहरूको लागी तपाईंको वेब अनुप्रयोगहरू मूल्यांकन गर्न वास्तवमा केहि आधारभूत परीक्षण चलाउन सक्नुहुन्छ। पहिलो, सावधानीको एक शब्द: मैले परीक्षण गरेको आधारभूत SQL इंजेक्शन दोषहरूको लागि मात्र हेर्दछ। उनीहरूले उन्नत प्रविधिहरू पत्ता लगाउँदैनन् र प्रयोग गर्न केही थकित छन्। यदि तपाईं यसलाई बर्दाश्त गर्न सक्नुहुन्छ, स्वचालित स्क्यानरको साथ जानुहोस्। यद्यपि, यदि तपाइँ त्यो मूल्य ट्यागलाई सम्भाल्न सक्नुहुन्न भने, म्यानुअल परीक्षण एक उत्कृष्ट पहिलो चरण हो।

मूल्यांकन गर्न को लागी सबै भन्दा आसान तरीका चाहे अनौपचारिक इंजेक्शन आक्रमणहरु संग प्रयोग को लागी हो यदि तपाईंको सफल डेटाबेस मा हानिकारक नहीं हुनेछ यदि तपाईं एक समस्या को सही गर्न को आवश्यकता हो कि तपाईं संग प्रमाण प्रदान गर्नेछ। उदाहरणको लागि, मान्नुहोस् कि तपाईसँग एक साधारण वेब अनुप्रयोग थियो जुन डाटाबेसमा एक व्यक्तिलाई हेर्छ र परिणामको रूपमा सम्पर्क जानकारी प्रदान गर्दछ। त्यो पृष्ठले निम्न यूआरएल ढाँचा प्रयोग गर्न सक्छ:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

हामी मान्न सक्छौं कि यो पृष्ठले निम्नसँग समान प्रश्न प्रयोग गरी डेटाबेस लुकअप प्रदर्शन गर्छ:

SELECT फोन बाट डाइरेक्टरी जहाँ अन्तिम नाम = 'अध्याप' र firstname = 'मिक'

यो थोडा साथ प्रयोग गरौं। माथि हाम्रो धारणा संग, हामी URL मा सरल परिवर्तन गर्न सक्छ जुन एसक्यूएल इंजेक्शन आक्रमणका लागि परीक्षण गर्दछ:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+and+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1

यदि वेब अनुप्रयोग SQL SQL इंजेक्शनको विरुद्ध ठीकसँग सुरक्षित गरिएको छैन भने, यो सजिलैले यो नक्कली पहिलो नाम SQL कथनमा यसलाई डेटाबेसको विरुद्ध कार्यान्वयनमा प्लग गर्दछ, जसमा परिणामस्वरूप:

चयन गर्नुहोस् फोनबाट डाइरेक्टरी जहाँ अन्तिम नाम = 'अध्यापन' र firstname = 'मिक' र (चयन गणना (*) नकलीबाट)> वा '1' = '1'

तपाईलाई ध्यान दिनुहोस कि माथिको वाक्य वाक्य मूल URL मा भन्दा फरक फरक छ। मैले आफ्नो एन्एससीआईआई समकक्षको लागि यो उदाहरणको पालना गर्न सजिलो गर्न URL-एन्कोड गरिएको चर कन्वर्ट गर्ने स्वतन्त्रता लिनुभयो। उदाहरणका लागि,% 3d '=' क्यारेक्टरको लागि URL-एन्कोडिङ हो। मैले समान प्रयोजनका लागि केही लाइन ब्रेकहरू पनि थप्नुभयो।

परिणामहरू मूल्याङ्कन गर्दै

परीक्षण आउँछ जब तपाईं वेबपृष्ठ माथि माथि सूचीबद्ध URL को साथ लोड गर्न प्रयास गर्नुहुन्छ। यदि वेब अनुप्रयोग राम्रो व्यवहार गरिन्छ भने, क्वेरी डेटाबेसमा पास गर्नु अघि इनपुटबाट एक उद्धरण पट्टी बाहिर पुर्याउनेछ। यो केवल एक नाम को लागि अजीब लुकअप मा आउनेछ जो पहिलो नाम मा SQL को गुच्छा समावेश गर्दछ! तपाइँले तल रहेको एउटा समान जस्तै अनुप्रयोगबाट त्रुटि सन्देश देख्नुहुनेछ:

त्रुटि: कुनै प्रयोगकर्ता भेटिएन mike + AND + (चयन + गणना (*) + + नकलीबाट) +% 3e0 + OR + 1% 3d1 चैपल!

अर्कोतर्फ, यदि SQL इन्जेक्शनमा अनुप्रयोग कमजोर छ भने, यो विवरण सीधा डाटाबेसमा पास गर्नेछ, जसको कारण दुई संभावनाहरु मध्ये एक छ। पहिला, यदि तपाईंको सर्भरले विस्तृत त्रुटि सन्देशहरू सक्षम गरेको छ (तपाईले गर्नु हुँदैन!), तपाई केहि जस्तै यो देख्नुहुनेछ:

ODBC ड्राइभर त्रुटि '80040e37' को लागि Microsoft OLE DB प्रदाता [Microsoft] [ODBC SQL Server Driver] [SQL Server] अमान्य वस्तु नाम 'नकली'। /directory.asp, लाइन 13

अर्कोतर्फ, यदि तपाईंको वेब सर्भरले विस्तृत त्रुटि सन्देशहरू प्रदर्शन गर्दैन भने, तपाईले थप सामान्य त्रुटि पाउनुहुनेछ, जस्तै:

आन्तरिक सर्भर त्रुटि सर्भरले आन्तरिक त्रुटि वा गलत कन्फिगुरेसनको सामना गर्यो र तपाईंको अनुरोध पूरा गर्न सकिएन। कृपया सर्भर प्रशासकलाई सम्पर्क गर्नुहोस् जब त्रुटि उत्पन्न भयो र तपाईले गरेको सक्नुभएका केहि चीजहरूको बारेमा जानकारी दिनुहोस् जुन त्रुटिको कारण हुन सक्छ। यो त्रुटिको बारेमा थप जानकारी सर्भर त्रुटि लगमा उपलब्ध हुन सक्छ।

यदि तपाइँले माथिको दुइटा त्रुटिहरू मध्ये एक प्राप्त गर्नुभयो भने, तपाईको अनुप्रयोग SQL इंजेक्शन आक्रमणमा कमजोर छ! SQL इन्जेक्शन आक्रमणका विरुद्ध तपाईका अनुप्रयोगहरूको सुरक्षा गर्न तपाईं केहि कदमहरू समावेश छन्: