مبحث یکم : مقدمه و تاریخچه
مبحث دوم: مراحل نفوذ کردن / جلوگیری از نفوذ
مبحث سوم: حملات شبکه ای
مبحث چهارم - کار عملی
مبحث پنجم - DHCP
مبحث ششم - وب و حملات مطرح در آن
مبحث هفتم - حملات DoS
مبحث هشتم - سیستم عامل
مبحث نهم - مهندسی اجتماعی
مبحث دهم - Vulnerability (آسیب پذیری)

چگونگی تبادل اطلاعات بین پایگاه داده و یک سایت اینترنتی

ممکن است یک سایت خیلی ساده باشد یعنی اصلاً پایگاه داده ندارشته باشد. اما اکثر سایت های امروزی از پایگاه داده استفاده می کنند. یعنی داده های مورد نیاز سایت را در یک سیستم جدای از وب، به نام پایگاه داده ذخیره می کند. خوب پس وب سایت باید یک تبادل اطلاعات با DBMS داشته باشد. مثلاً سایت از DB می پرسد آیا این اطلاعات را داری یا نه و یا یک اطلاعاتی را در پایگاه داده درج کن و …. .

با توجه به مقادیری که در فیلدهای سایت پر می کنیم، سایت، یک سری درخواست های SQL را آماده می کند و به سمت DBMS می فرستد. به این درخواست ها Query (پرس و جو) می گویند. DBMS نیز پاسخ query را به سمت وب سرور ارسال می کند.

شکل 11 یک معماری چند لایه از وب سرور و DBMS service را نشان می دهد.

یک سری از سایت ها ممکن است یک سیستم کامپیوتری داشته باشند که وب سرور، ftp، telnet، mail server و database همه بر روی همان سیستم کامپیوتری نصب و در حال کارکردن باشند. عیب این کار این است که اگر آن سیستم کامپیوتری fail شود کل عملیات مختل می شوند. معماری صحیح چند لایه بودن است. در حالت قبلی اگر نفوذی به سیستم انجام شود، به DB دسترسی دارد به ایمیل ها، فایل ها و … دسترسی دارد. اما در معماری چند لایه سرویس ها از هم جدا می شوند. مثلاً وب سرور را در یک جا، Database Server در جای دیگر، بین این دو IDS می گذارند و ….

زمانی که دستور select * from user; را اجرا می کنیم. تمام سطرهای جدول نمایش داده می شود، حال اگر خواسته باشیم که تنها برخی از سطرها که دارای شرایطی هستند نمایش داده شوند از دستور where استفاده می کنیم.

مثال: دستور زیر مشخصات فردی را که idاش 1 است را نمایش می دهد.

Select * from user where id=1

مثال: دستور زیر مشخصات کسی که idاش برابر 2 است یا کسی ک نام کاربری اش MAGMAG است را نمایش می دهد.

“Select * from user where id=2 or uname= “MAGMAG

or و and می توانند در قسمت where مورد استفاده قرار بگیرند.

اگر بخواهیم که فقط فیلدهای (ستون های) خالی از جدول نمایش داده شوند، به جای * نام آن فیلدها را می نویسیم.

مثال: نام کاربری و ایمیل فردی که idاش برابر 1 است.

Select uname, email from user where id=1

حالا به مراحل تبادل اطلاعات بین پایگاه داده و یک سایت اینترنتی را در شکل 11 بررسی کنید.

چگونگی شکل گیری حمله

اوایل که بحث آن مطرح شد بسیاری از سایت ها که از DB استفاده می کردند حمله SQL- Injection می خوردند. الان یک سری روش های دفاعی برای مقابله قرار داده شده است. اما همین الان هم باز خیلی از سایت ها را می توان یافت که حملات SQL- Injection پیشرفته بر آنها وارد شده است. حمله SQL-Injection موفق می تواند DB را بخواند، insert کند، drop کند، از DB، backup برای خودش بگیرد. حال می تواند این DB برای یک دانشگاه باشد که در آن کلی اطلاعات حساس وجود دارد. از طرف دیگر بسته به DBMS، دستوراتی وجود دارد که می توان از یک سری توابع تعریف شده استفاده کرد. مثلاً دستوراتی را در اختیارمان قرار می دهد که بتوانیم روی سیستم command اجرا کنیم (مثلاً بتوانیم یک فایل در سیستم را بخوانیم، پاک کنیم و …). پس اگر به DB نفوذ شود، عملاً به کل سیستم نفوذ پیدا کرده است.

شکل 11

SQL Injection بسته به logی که تنظیم کرده باشید هم در وب می تواند ثبت شود و هم در DB.

اسکرول به بالا