SQL انجیکشن کی خرابی کے لئے جانچ

SQL انجکشن حملوں کو متحرک مواد تخلیق کرنے کے لئے ڈیٹا بیس کے پس منظر پر منحصر ہے کہ ویب ایپلی کیشنز کے لئے زبردست خطرات کی وجہ سے. اس قسم کے حملے میں، ہیکرز اپنے ویب ڈیٹا بیس کے ذریعہ جاری کردہ ان SQL سرورز کو انجیکشن کرنے کی کوشش میں ایک ویب ایپلی کیشن کو ہراساں کرتے ہیں. مثال کے طور پر، ڈیٹا بیس پر SQL انجکشن حملہ آرٹیکل ملاحظہ کریں. اس آرٹیکل میں، ہم آپ کے ویب ایپلی کیشنز کو جانچنے کے لۓ کئی طریقوں پر نظر ڈالتے ہیں کہ یہ تعین کرنے کے لئے کہ وہ SQL انجکشن حملوں میں کمزور ہیں یا نہیں.

خود کار SQL انجکشن سکیننگ

ایک امکان خود کار طریقے سے ویب ایپلی کیشن زیادتی سکینر، جیسے HP کے ویب انسپکٹر، آئی بی ایم کے ایسوسی اسکین یا سنزیک کی ہیلی اسٹرم کا استعمال کر رہا ہے. یہ ٹولز ممکنہ طور پر SQL انجیکشن کے خطرات کے لۓ اپنے ویب ایپلی کیشنز کا تجزیہ کرنے کے لئے آسان، خود کار طریقے سے پیش کرتا ہے. تاہم، وہ کافی مہنگی ہیں، فی سیٹ تک $ 25،000 فی سیٹ.

دستی SQL انجکشن ٹیسٹ

ایک غریب ایپلیکیشن ڈویلپر کیا کرنا ہے؟ آپ کسی ویب براؤزر کے مقابلے میں کچھ بھی نہیں کرتے ہوئے SQL انجیکشن کے خطرات کے لئے آپ کے ویب ایپلی کیشنز کا اندازہ کرنے کے لئے اصل میں کچھ بنیادی ٹیسٹ چلا سکتے ہیں. سب سے پہلے، احتیاط کا ایک لفظ: میں آزمائشی ٹیسٹ صرف SQL SQL انجکشن کے لئے تلاش کرتا ہوں. وہ اعلی درجے کی تکنیکوں کا پتہ لگانے کی کوشش نہیں کریں گے اور استعمال کرنے کے لئے کچھ محتاط ہیں. اگر آپ اسے برداشت کر سکتے ہیں، خود کار طریقے سے سکینر کے ساتھ جائیں. تاہم، اگر آپ اس قیمت ٹیگ کو نہیں سنبھال سکتے ہیں، دستی ٹیسٹنگ ایک بہترین پہلا مرحلہ ہے.

یہ اندازہ کرنے کا سب سے آسان طریقہ یہ ہے کہ آیا کوئی درخواست ناقابل یقین انجکشن کے حملوں کے ساتھ استعمال کرنا ہے، جو واقعی آپ کے ڈیٹا بیس کو نقصان پہنچے گا اگر وہ کامیاب نہ ہوں تو آپ کو اس مسئلے کو فراہم کرے گا جو آپ کو ایک مسئلہ کو درست کرنے کی ضرورت ہے. مثال کے طور پر، فرض کریں کہ آپ کے پاس ایک آسان ویب ایپلی کیشن ہے جو ایک ڈیٹا بیس میں ایک شخص کو دیکھتا ہے اور نتیجے کے طور پر رابطہ کی معلومات فراہم کرتا ہے. یہ صفحہ مندرجہ ذیل یو آر ایل کی شکل کا استعمال کرسکتا ہے:

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

ہم یہ سمجھ سکتے ہیں کہ یہ صفحہ مندرجہ ذیل کے ساتھ ایک سوال کا استعمال کرتے ہوئے ، ڈیٹا بیس کی تلاش میں کام کرتا ہے.

ڈائرکٹری سے منتخب کریں جہاں آخری نام = 'چپل' اور firstname = 'مکی'

اس کے ساتھ ساتھ ساتھ آتے ہیں. مندرجہ بالا ہمارے مفہوم کے ساتھ، ہم URL میں ایک سادہ تبدیلی کر سکتے ہیں جو SQL انجیکشن کے حملوں کے لئے ٹیسٹ کرتا ہے:

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

اگر SQL ایپلی کیشن کے خلاف ویب ایپلیکیشن مناسب طریقے سے محفوظ نہیں ہے تو، یہ صرف اس جعلی پہلا نام SQL بیان میں ڈیٹا بیس کے خلاف عملدرآمد کرتا ہے، جس میں نتیجے میں:

0 یا '1' = '1' (منتخب جعلی سے شمار (*) منتخب کریں اور پھر آخری نام = 'مکی' اور ڈائریکٹری سے منتخب کریں.

آپ کو معلوم ہو گا کہ نحوط مندرجہ بالا اصل یو آر ایل میں اس سے کہیں زیادہ مختلف ہے. میں نے ان کے ASCII مساوات کے لئے URL-encoded متغیر کو تبدیل کرنے کی آزادی کو مثال کے طور پر عمل کرنے کے لئے آسان بنانے کے لئے لیا. مثال کے طور پر،٪ 3d '=' کردار کیلئے URL- انکوڈنگ ہے. میں نے اسی طرح کے مقاصد کے لئے کچھ لائن وقفے بھی شامل کی ہیں.

نتائج کا اندازہ

ٹیسٹ آتا ہے جب آپ مندرجہ بالا درج کردہ URL کے ساتھ ویب صفحہ لوڈ کرنے کی کوشش کرتے ہیں. اگر ویب ایپلی کیشنز کو اچھی طرح سے برتاؤ کیا جاتا ہے، تو یہ ڈیٹا بیس کو پاس ورڈ سے گزرنے سے پہلے ان پٹ سے اکیلے ایک کوٹ آؤٹ کرے گا. یہ صرف کسی ایسے شخص کے لئے ایک عجیب لپیٹ کا نتیجہ ہے جس کا پہلا نام ہے جس میں SQL کا ایک گروپ شامل ہے. آپ مندرجہ بالا ذیل میں اسی طرح کی درخواست سے ایک غلط پیغام دیکھیں گے:

خرابی: کوئی صارف نام مکی کے ساتھ نہیں ملا + اور + (+ شمار + + جعلی سے + + + 3 3 +0 + + +٪ 3d1 Chapple!

دوسری طرف، اگر ایپلیکیشن SQL SQL انجیکشن میں کمزور ہے تو، یہ بیان براہ راست بیس بیس بیس تک منتقل کرے گا جس کے نتیجے میں دو امکانات میں سے ایک ہے. سب سے پہلے، اگر آپ کے سرور نے غلطی کے پیغامات کو قابل بنایا ہے (جو آپ کو نہیں ہونا چاہئے)، آپ اس طرح کچھ دیکھیں گے:

مائیکروسافٹ OLE ڈی بی فراہم کنندہ ODBC ڈرائیور کی غلطی '80040e37' [مائیکروسافٹ] [ODBC SQL سرور ڈرائیور] [SQL سرور] غلط اعتراض کا نام 'جعلی'. /directory.asp، لائن 13

دوسری طرف، اگر آپ کے ویب سرور میں تفصیلی غلطی کے پیغامات ظاہر نہیں ہوتے ہیں، تو آپ کو مزید عام غلطی مل جائے گی، جیسے:

اندرونی سرور کی خرابی سرور نے داخلی غلطی یا غلط فہمی کا سامنا کیا اور آپ کی درخواست مکمل کرنے میں قاصر تھا. غلط استعمال کی اطلاع دیتے ہوئے ایرر آ گیا ہے. براہ مہربانی دوبارہ کوشش کریں. اگر یہ ایرر برقرار رہے تو ہمارے ہیلپ ڈیسک سے رابطہ کریں. اس ویڈیو پر غلط استعمال کی اطلاع دیتے ہوئے ایرر آ گیا ہے. اس غلطی کے بارے میں مزید معلومات سرور کی غلطی لاگ ان میں دستیاب ہوسکتی ہے.

اگر آپ کو اوپر دو غلطیوں میں سے ایک موصول ہو تو، آپ کی درخواست SQL انجکشن حملے کے لئے خطرناک ہے! SQL مرحلے کے حملوں کے خلاف آپ کے ایپلی کیشنز کی حفاظت کے لۓ آپ کچھ اقدامات کر سکتے ہیں: