এসকিউএল ইনজেকশন দুর্বলতা জন্য পরীক্ষা

এসকিউএল ইনজেকশন আক্রমণগুলি ওয়েব অ্যাপ্লিকেশনের জন্য জরুরী ঝুঁকিগুলি বহন করে যা ডাইনামিক কন্টেন্ট তৈরি করার জন্য ডাটাবেস ব্যাকএন্ডের উপর নির্ভর করে। এই ধরনের আক্রমণে, হ্যাকার একটি ওয়েব অ্যাপ্লিকেশনে নিখুঁতভাবে ডাটাবেস দ্বারা ইস্যু করা তাদের নিজস্ব এসকিউএল কমান্ডগুলি প্রবেশ করানোর চেষ্টা করে। উদাহরণস্বরূপ, ডাটাবেসের উপর নিবন্ধ SQL ইনজেকশন আক্রমণ দেখুন। এই নিবন্ধে, আমরা বিভিন্ন উপায়ে আপনি আপনার ওয়েব অ্যাপ্লিকেশন পরীক্ষা করতে পারেন যে তারা এসকিউএল ইনজেকশন আক্রমণের প্রবন কিনা তা নির্ধারণ করে।

স্বয়ংক্রিয় এসকিউএল ইনজেকশন স্ক্যান

একটি সম্ভাবনা স্বয়ংক্রিয় ওয়েব অ্যাপ্লিকেশন দুর্বলতা স্ক্যানার ব্যবহার করছে, যেমন এইচপি এর ওয়েবআইএনসেক্ট, আইবিএম এর অ্যাপসান বা সেনজিকের হেলস্ট্রাম। এই সরঞ্জামগুলিতে সমস্ত সম্ভাব্য এসকিউএল ইনজেকশন দুর্বলতা জন্য আপনার ওয়েব অ্যাপ্লিকেশন বিশ্লেষণ সহজ, স্বয়ংক্রিয় উপায় প্রস্তাব। তবে, তারা বেশ ব্যয়বহুল, প্রতি সীট প্রতি $ 25,000 পর্যন্ত চলমান।

ম্যানুয়াল এসকিউএল ইনজেকশন টেস্ট

একটি দরিদ্র অ্যাপ্লিকেশন বিকাশকারী কি করবেন? এসকিউএল ইনজেকশন দুর্বলতাগুলির জন্য আপনার ওয়েব অ্যাপ্লিকেশনগুলির মূল্যায়ন করার জন্য আপনি আসলে কিছু মৌলিক পরীক্ষা চালাতে পারেন। প্রথমত, সাবধানতা একটি শব্দ: আমি পরীক্ষা পরীক্ষা শুধুমাত্র বেসিক এসকিউএল ইনজেকশন ত্রুটি জন্য চেহারা। তারা উন্নত কৌশল সনাক্ত করবে না এবং ব্যবহারের জন্য কিছুটা ক্লান্তিকর। আপনি এটি সামর্থ্য করতে পারেন, একটি স্বয়ংক্রিয় স্ক্যানার সঙ্গে যান। যাইহোক, আপনি যে দাম ট্যাগ পরিচালনা করতে পারবেন না, ম্যানুয়াল পরীক্ষার একটি মহান প্রথম ধাপ।

কোনও অ্যাপ্লিকেশন অস্পষ্ট কিনা তা মূল্যায়ন করার সবচেয়ে সহজ উপায় হল নিখুঁত ইনজেকশন আক্রমণগুলির সাথে পরীক্ষা করা যা আসলে আপনার ডেটাবেসকে ক্ষতিগ্রস্ত করবে না তবে তারা আপনাকে প্রমাণ প্রদান করবে যে আপনাকে একটি সমস্যা সংশোধন করতে হবে। উদাহরণস্বরূপ, অনুমান করুন আপনি একটি সহজ ওয়েব অ্যাপ্লিকেশন আছে যা একটি ডেটাবেসে একজনকে দেখায় এবং ফলাফল হিসাবে যোগাযোগের তথ্য প্রদান করে। সেই পৃষ্ঠাটি নিম্নলিখিত URL ফরম্যাটটি ব্যবহার করতে পারে:

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

আমরা অনুমান করতে পারি যে এই পৃষ্ঠাটি নিম্নরূপ অনুরূপ একটি ক্যোয়ারী ব্যবহার করে একটি ডাটাবেস সন্ধান করে :

ডিরেক্টর থেকে ফোনটি নির্বাচন করুন যেখানে lastname = 'chapple' এবং firstname = 'mike'

এর একটি বিট সঙ্গে পরীক্ষা করা যাক উপরে আমাদের ধৃষ্টতা সহ, আমরা এসইএল ইনজেকশন আক্রমণের জন্য পরীক্ষার জন্য ইউআরএল এর একটি সহজ পরিবর্তন করতে পারি:

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

যদি ওয়েব অ্যাপ্লিকেশনটি সঠিকভাবে এসকিউএল ইনজেকশন ছাড়াই সুরক্ষিত না হয় তবে এটি কেবল এসকিউএল স্টেটমেন্টে এই জাল নামটি প্লাগ করে দেয় যা ডাটাবেসের বিরুদ্ধে কার্যকর করে, ফলে:

ডিলিট থেকে ফোনটি নির্বাচন করুন যেখানে lastname = 'chapple' এবং firstname = 'mike' এবং (জাল থেকে নির্বাচন সংখ্যা (*))> 0 '1' = '1'

আপনি লক্ষ্য করবেন যে উপরের সিন্টেক্স মূল URL এর তুলনায় একটু ভিন্ন। আমি তাদের ASCII সমতুল্য URL- এনকোডেড পরিবর্তনশীল রূপান্তর করার স্বাধীনতা গ্রহণ করেছিলাম যাতে উদাহরণটি অনুসরণ করা সহজ করে তোলে। উদাহরণস্বরূপ,% 3d '=' অক্ষরের জন্য URL- এনকোডিং। আমি একই উদ্দেশ্য জন্য কিছু লাইন বিরতি যোগ।

ফলাফল মূল্যায়ন

আপনি উপরে উল্লিখিত URL- এর সাথে ওয়েবপৃষ্ঠাটি লোড করার চেষ্টা করেন তখন পরীক্ষা আসে। যদি ওয়েব অ্যাপ্লিকেশনটি ভাল আচরণ করা হয়, তবে ডাটাবেস থেকে প্রশ্নটি পাস করার আগে এটি ইনপুট থেকে একক উদ্ধৃতি চিহ্নটি বের করে ফেলবে। এটি কেবল এমন একটি অদ্ভুত লিংকের ফলাফল যা প্রথম নামটি যার মধ্যে এসকিউএল এর একটি গুচ্ছ রয়েছে! আপনি নীচের অনুরূপ অ্যাপ্লিকেশন থেকে একটি ত্রুটি বার্তা দেখতে পাবেন:

ত্রুটি: নাম মাইক + এবং + + (+ + + জাল থেকে + + নির্বাচন করুন + + +) +% 3e0 + বা + 1% 3d1 চ্যাপেল দিয়ে কোনও ব্যবহারকারী পাওয়া যায় না!

অন্যদিকে, যদি অ্যাপ্লিকেশনটি এসকিউএল ইনজেকশনের জন্য ঝুঁকিপূর্ণ হয় তবে এটি সরাসরি ডেটাবেসে বিবৃতিটি পাস করবে, যার ফলে দুটি সম্ভাবনার মধ্যে একটি। প্রথমত, যদি আপনার সার্ভারে বিস্তারিত ত্রুটির বার্তা সক্ষম থাকে (যা আপনার উচিত নয়!), আপনি এটির মত কিছু দেখতে পাবেন:

মাইক্রোসফট ODBC ড্রাইভার ত্রুটি '80040e37' [মাইক্রোসফ্ট] [ওডিবিসি SQL সার্ভার চালক] [এসকিউএল সার্ভার] অবৈধ অজানা নাম 'জাল' জন্য মাইক্রোসফ্ট OLE DB প্রদানকারী। / ডাইরেক্টরি.আইপি, লাইন 13

অন্যদিকে, যদি আপনার ওয়েব সার্ভার বিশদ ত্রুটির বার্তাগুলি প্রদর্শন না করে, তবে আপনি আরও জেনারিক ত্রুটি পাবেন, যেমন:

অভ্যন্তরীণ সার্ভার ত্রুটি সার্ভারটি একটি অভ্যন্তরীণ ত্রুটি বা ভুল কনফিগারেশনের সম্মুখীন হয়েছে এবং আপনার অনুরোধটি সম্পূর্ণ করতে ব্যর্থ হয়েছে। ত্রুটি ঘটেছে সময় এবং আপনি ভুল কারণ হতে পারে যে কিছু হতে পারে জানাতে সার্ভার প্রশাসক যোগাযোগ করুন। এই ত্রুটি সম্পর্কে আরও তথ্য সার্ভার ত্রুটি লগ পাওয়া যাবে।

যদি আপনি উপরে দুটি ত্রুটিগুলির মধ্যে একটিতে পান তবে আপনার এসকিউএল ইনজেকশন আক্রমণের জন্য ঝুঁকিপূর্ণ! এসকিউএল ইনজেকশন আক্রমণের বিরুদ্ধে আপনার অ্যাপ্লিকেশনগুলি রক্ষা করতে আপনি যে কয়েকটি পদক্ষেপগুলি নিতে পারেন: