سلام
همون طور که قول دادم قرار شد یه مطلب دربارهء ISP Util بنویسم.این مطلب یه چیز تو مایه های کشف و گزارش یه باگ هست و دربارهء ISP Util هایی صدق میکنه که بانک اطلاعاتیشون SQL باشه.از اون جایی که من هنوز در زمینه امنیت شبکه اطلاعاتی در حد یه مبتدی هستم شما این مطلب رو زیاد جدی نگیرید! آخه من کسی نیستم که بخوام کار یه گروه برنامه نویسی رو زیر سئوال ببرم.خوب دیگه زیاد حرف زدم.بریم سر اصل قضیه.
چند روز پیش کــــه داشتم با ISP Util اکانتم رو چک میکردم به یه Error برخوردم:
.ERROR: Could not found your Username (cp140510h) in database
همون طور که متوجه شدین این یه پیغام خطای ساده مبنی بر وجود نـــداشتن چنین Username ای توی Data Base هست.همین جا یه هو فکرم رفت طرف SQL Piggy Back که با برگردوندن پیغام های خطاهای بسیار خطرناک میتونه همه چی رو لو بده(مثلاْ مشخص شدن اسم فیلدها).ولی خوب این خطا یه خطای کاملاْ منطقی هست و هیچ مشکلی هم درش نیست.واسه همین با خودم گفتم دستورات SQL رو تست میکنم.شاید اونطوری بتونم به نتیجه ای برسم.با وارد کردن دستورات SQL توی قسمت یوزر و فشار دادن دکمه WEB Report به Error جالبی برخوردم.
» دستوری که وارد کردم این بود:
SELECT * From UID
» که پیغام خطای زیر رو بهم داد :
.ERROR: Could not found your Username (***$*$*$*$*$*&(&)&(&)&() in database
با خودم گفتم شاید چون طول رشته زیاد بوده قاطی کرده.واسه همین یه رشــته الکی وارد کردم تا ببینم واقعاْ این رو به عنوان دستور SQL شناخته و Error رو برگردونده یا نه.
» رشته ای که وارد کردم:
my name is mobin
» و جوابی که گرفتم:
.ERROR: Could not found your Username (my name is mobin) in database
خوب همون طور که می بینید این رو به عنوان یه ورودی معمولی که همون Username باشه شناخت.ولی حالا با اضافه کردن یه سیمی کالن(;) به آخــــر رشته ورودی که در SQL نشان دهندهء پایان یک دستور هست و برای فرستادن بیش از یک دستور به صورت هزمان به Data Base استفاده میشه نتیجه متفاوتی گرفتم.
» رشته ورودی با سیمی کالن:
;my name is mobin
» خروجی :
.ERROR: Could not found your Username (****$*&(&)&(+++()-==@^0) in database
جالبه,نه؟ حالا جالب تر از همه این جاست که اگه یه دستور (دستور،نه رشته معمولی بدون سیمی کالن) غیر معتبر مثل دستور بالا همیشه همین Error رو میده.حالا که از فرستادن دستور SQL رو Data Base از روی پیغام خطا خیالم راحت شدم دستورات SQL دیگه ای رو تست کردم.
» مثل این یکی:
'SELECT * From Users Where UID = 'mobin
» که پیغام خطای زیر رو داد:
ERROR: Could not found your Username (***%@%@%@%@%@&0&0&0&0&0) in database.
باز یه نکته جالب دیگه که هست اینه که هر دستور SQL با یه پیغام جداگانه ظاهر میشه.
» مثل این یکی:
DELETE * From UID
» که پیغام خطای زیر رو داد:
ERROR: Could not found your Username (***&^&^&^&^&^%*%*%*%*%*) in database.
نکاتی مهم از کتاب نفوذگری در شبکه و روشهای مقابله:
۱- "هر واکنش غیر طبیعی نشان دهندهء یک ضعف است و نفوذگر با تمرکز بر آن سعی میکند تا از طریق دستورات و عبارات SQL در قالب داده های ورودی عملیات مورد نظرش را روی بانک اطلاعاتی اعمال کند."
۲- "برای هر نقطه ضعف در برنامه کاربردی, مجموعه ای از دستورات به صورت سعی و خطا امتحان شده و پاسخ آنها برسی میشود تا عملیات موفق و قابل انجام مشخص شود."
خوب،فکر میکنم زیاد هم غیر منطقی نباشه... نظر شما چیه؟
سلام
ما که از وبلاگتون لذت بردیم می خواستم نظر شما را در مورد تبادل لینک بدانیم و اگر خواستید با هم تبادل لوگو هم بکنیم خلاصه یه سری هم به ما بزنید اگر دوست داشتید یه نظر هم بدهید .
با تشکر
بای
سلام
نظرتون راجع به تبادل لینک یا لوگو چیه
(اگه لوگو نداری بگو بسازیم) به ما حتما سر بزن در روز ۳ بار آپدیت می کنیم
در ضمن وبلاگت خیلی تووووووووووووووووپه !!!
سلام مبین جان
وبلاگ رو اگه همون english ادامه میدادی جالب تر بود به نظر من.
به هر حال
موفق باشی دوسته عزیز
سلام از اینکه به وبلاگ من سر زدی ممنونم.