حملات سامانه های تحت وب

آسیب‌پذیری‌های امنیتی رایج برنامه‌های وب
حملات علیه برنامه‌های وب از دستکاری هدفمند پایگاه داده گرفته تا اختلال شبکه در مقیاس وسیع، متغیر هستند. در ادامه برخی از روش‌های متداول حمله یا جنبه‌هایی که معمولاً مورد سوء‌استفاده قرار می‌گیرند را بررسی می‌کنیم:

حملات اسکریپت نویسی متقابل سایت (XSS):

مخفف کلمه Cross-Site Scripting بصورت CSS می باشد اما این مخفف به دلیل اینکه با ساختاری به نام CSS که در طراحی وب وجود دارد شباهت دارد به XSS تغییر داده شد .

 

این نوع حمله که همانطور که از نامش پیداست از ساختار اسکریپت نویسی استفاده می کند ، به نرم افزارهای تحت وب از طریق اسکریپت نویسی حمله می کند . هدف اصلی این نوع حمله بدست آودن اطلاعات از کاربران و کلاینت هایی است که به سرور متصل می شود .

اکثر کدهایی که توسط هکر ها در نرم افزارهای تحت وب وارد می شود که در سمت کلاینت اجرا شود و معمولا به زبان جاوا اسکریپت نوشته می شود.

همیشه در هر جا نامی از Inject کردن شنیدید ، به این معناست که حمله از طریق وارد کردن اطلاعات به درون یک فیلد اطلاعاتی انجام می شود .

در صورتیکه برنامه نویس وب سایت شما در فیلد های ورودی اطلاعات خود اعتبارسنجی یا Validation را انجام ندهد ، آن وب سایت مستعد بروز حملات XSS خواهد بود.

حملات XSS خود به دو دسته بندی تقسیم می شوند که به عنوان انعکاس و ذخیره شناخته می شوند:

در حملات از نوع انعکاس ، هکر یک حفره امنیتی و راهی برای استفاده از آن پیدا می نماید تا کاربر ناشناس را به یک برنامه وب دارای آسیب پذیری XSS هدایت کند . در این هنگام حمله انجام شده است . این حمله به وسیله یک سری از پارامترهای URL که با Urlارسال می شوند، انجام می شود.

در حملات از نوع ذخیره ، هکر کدهای مخربی را که یک کاربر در آینده آنها را فراخوانی می کند ذخیره می نماید. در واقع یک کاربر ندانسته به کدهای مخرب برخورد می نماید و کدهای مخرب اجرا می شوند. مسئله اینجاست که هنگام ذخیره سازی کدها و همچنین هنگام واکشی آنها اعتبارسنجی ورودی ها و خروجی ها انجام نشده است.

نکته حائز اهمیت این است که حتی درصورت اعتبارسنجی یا Validation کدها در هنگام ذخیره نمودن آنها، چک نمودن خروجی ها و اعتبار سنجی آنها نیز لازم است.

حمله SQL Injection

همانطور که می دانید واژه SQL مخفف کلمه Structured Query Language می باشد که زبانی برای برقرار ارتباط با پایگاه های داده می باشد ، این زبان می تواند برای انجام پرسش و پاسخ یا Query گرفتن از پایگاه های داده ای مانند MSSQL یا MySQL یا Oracle یا هر پایگاه داده مشابهی مورد استفاده قرار بگیرد.

 

همانطور که قبلا هم اشاره کردیم هرگاه نامی از Injection یا تزریق به گوشمان خورد بلافاصله باید به این فکر بیوفتیم که می توانیم دستورات تعریف نشده ای را به سمت سرور مقصد ارسال و پاسخ دلخواه خود را بدست بیاوریم. ساختار کاری حملات SQL Injection به این صورت است که هرگاه فیلد ورود و خروج اطلاعاتی وجود داشته باشد که در پس زمینه آن یک پایگاه داده باشد .

می توانیم با وارد کردن دستورات غیرمعمول زبان SQL در این فیلد ها پاسخ هایی از سرور مورد نظر دریافت کنیم که حاوی اطلاعات حساس می باشند. در خصوص حملات SQL Injection در مقاله ای بصورت جداگانه و مفصل بحث خواهیم کرد و هدف در اینجا صرفا شناسایی این نوع حمله است.

یکی از فیلدهایی که در وب سایت ها بسیار مورد حملات SQL Injection قرار می گیرد ، فیلد Forgot Password یا فراموشی رمز عبور است. از این فیلد زمانی استفاده می شود که کاربر رمز عبور خود را فراموش کرده است و می خواهد با وارد کردن ایمیل خود ، رمز عبور را بازیابی کند تا بتواند مجددا وارد وب سایت بشود. فرض را بر این بگیرید که یک هکر در این فیلد یک ایمیل با قالب نادرست را وارد می کند .

 

حملات انکار سرویس (DoS) و انکار سرویس توزیع شده (DDoS):

از طریق روش‌های مختلف، مهاجمان می‌توانند سرور مورد نظر یا زیرساخت اطراف آن را با انواع مختلف ترافیک حمله overload کنند.
هنگامی که سرور دیگر نتواند درخواست‌های دریافتی را به طور موثر پردازش کند، عملکرد آن کند شده و در نهایت سرویس‌دهی به درخواست‌های کاربران مجاز را رد می‌کند.

خرابی حافظه:

خرابی حافظه زمانی رخ می‌دهد که یک مکان در حافظه به طور ناخواسته تغییر می‌کند، در نتیجه احتمال رفتار غیرمنتظره در نرم افزار وجود دارد. دشمنان تلاش می‌کنند تا از طریق سوءاستفاده‌هایی مانند تزریق کد یا حملات سرریز بافر، خرابی حافظه را شناسایی و از آن سوء استفاده کنند.

سرریز بافر:

 

سرریز بافر زمانی رخ می‌دهد که نرم افزار داده‌ها را در فضای تعریف شده‌ای در حافظه به نام بافر می‌نویسد. سرریز شدن ظرفیت بافر باعث می‌شود که مکان‌های حافظه مجاور با داده ها overwrite شوند. این رفتار می‌تواند برای تزریق کد مخرب به حافظه مورد سوءاستفاده قرار گیرد و امکان آسیب‌پذیری در ماشین مورد نظر را افزایش می‌دهد.

 

جعل درخواست متقابل سایت (CSRF):

 

CSRF فریب دادن قربانی برای ارائه درخواستی است که از احراز هویت یا مجوز آنها استفاده می‌کند. با استفاده از امتیازات حساب یک کاربر، مهاجم می‌تواند درخواستی را در قالب کاربر ارسال کند.
هنگامی که حساب کاربری در معرض خطر قرار گرفت، مهاجم می‌تواند اطلاعات مهم را از بین برده یا تغییر دهد. حساب‌های دارای سطح دسترسی بالا مانند ادمین‌ها یا مدیران معمولاً هدف این نوع حملات قرار می‌گیرند.

نقض داده:

برخلاف جنبه‌های مختلف حملات، نقض داده یک اصطلاح کلی است که به انتشار اطلاعات حساس یا محرمانه اشاره دارد و می‌تواند از طریق اقدامات مخرب یا اشتباه رخ دهد. دامنه نقض داده نسبتاً گسترده است و می‌تواند شامل چند رکورد بسیار ارزشمند تا میلیون‌ها حساب کاربری افشا شده باشد.

واسط امن سامانه های تحت وب جهت جلوگیری از حملات سامانه های تحت وب از طریق عدم انتشار سرویس در شبکه عمومی و احراز هویت چند عاملی به بالا بردن امنیت سامانه ها مخصوصا سامانه های سرویس ایمیل، اتوماسیون داخلی، حسابداری تحت وب، ثبت نام دانشگاه ها، کارگزینی، سامانه مناقصه و مزایده و … کمک میکند.