یکی از مهمترین بحث ها در حوزه امنیت، انواع حملاتی است که برای صفحات وب داریم. شناخت این حملات برای صاحبان وب سایت ها بسیار ضروری است، زیرا باید تدابیر لازم را جهت جلوگیری از مشکلات احتمالی بیاندیشند. امروزه به دلیل مشکلاتی که هکرها برای وب سایت ها به وجود می آورند؛ حل مشکلات امنیتی وب سایت ها در درجه اهمیت بالایی قرار دارد. از همین رو امروزه انجام تست های نفوذ توسط متخصصان امنیت بسیار رایج شده است. قبل از اینکه هرگونه اقدامی برای سایت خود انجام دهید لازم است تا با رایج ترین حمله های صفحات وب آشنا شوید. در این مقاله چند مورد از آنها را برای شما توضیح می دهیم.
این نوع حمله به صفحات وب به این صورت انجام می شود که حمله کننده درگاه های مختلفی را که از طریق آن می تواند اطلاعات ارسال کند، پیدا می کند. بعد از آن یک سری دستورات اجرایی را برای پلتفرم ها ارسال می کند تا آنها روی سرور اجرا شوند. هدف اصلی حمله کننده در این روش اجرای دستورات برنامه نویسی در بخش های مختلف سرور وب یا پایگاه داده است، در نتیجه تاثیری بر کاربران نخواهد داشت.
برای اینکه دستورات اجرایی به سرور ارسال شوند سه روش وجود دارد؛ در اولین روش از طریق متغیرهای تعریف شده در آدرس URL وب سایت ارسال انجام می شود. در روش دوم از طریق عناصر HTML که در تولید یک فرم استفاده می شوند این انتقال انجام می شود. این عناصر شامل باکس متن و منوهای کشویی است که در وب سایت ها برای گرفتن اطلاعات از کاربر قرار داده می شوند، تا کاربران اطلاعات را ایجاد یا ویرایش کنند. در روش سوم این انتقال توسط فایل هایی انجام می شود که نرم افزار آنها را پردازش می کند، مثلا فایل های XML که ساختاری محتوایی دارند و اطلاعات را به سرور انتقال می دهند.
در اجرای دستورات روی پلتفرم نیز، عناصر در سمت سرور هدف قرار می گیرند. در سرور وب برای اجرا کردن یک ویروس روی سرور، بدست گرفتن کنترل سرور و انجام کارهایی جهت ایجاد مشکل و تخریب بر روی سرور انجام می شود. در سرور پایگاه داده نیز، برای بدست آوردن اطلاعات پایگاه داده به روشی که کنترل های امنیتی آن داده ها را فیلتر نکند انجام می شود.
معروف ترین حملات این دسته عبارتند از:
همه این حملات تلاش می کنند تا ساختارهای امنیتی را دور بزنند و با دسترسی به زیرساخت نرم افزار اختیارات را بدست گرفته و اطلاعات را بدست آورند یا سرور را کنترل کنند. حتی برای کاربران شناسایی شده نیز باید همه نکات امنیتی رعایت شوند و به هیچ کاربری با هر سطحی نباید اعتماد کرد.
در هنگام ورود هر کاربر احراز هویت انجام می شود که حمله کنندگان تلاش می کنند تا اطلاعات اشخاص معتبر را بدست آورند. یکی از راه های آن ها استفاده از ضعف کلمات عبور کاربران است، که در این روش آن ها برای یک نام کاربری مجموعه ای از کلمات عبور را آماده کرده و به سرور ارسال می کنند تا یکی از آن ها درست تشخیص داده شود. برای جلوگیری از اینگونه حملات راه هایی مثل پیچیدگی کلمات عبور، استفاده از امضای دیجیتال، وارد کردن کد امنیتی و قفل کردن حساب در صورت تعداد زیاد ورود رمز عبور پیشنهاد می شود.
سرور نیز برای اینکه متوجه شود تا کدام کاربر وارد می شود، یک نشست ایجاد می کند که حمله کننده به دنبال نشست معتبر می گردد تا بتواند هدفش را عملی کند. در نظر داشته باشید هر بار که کاربر به سیستم درخواست می دهد یک نشست برایش ایجاد می شود که با یک شناسه شناخته می شود. این شناسه به عنوان متغیر در آدرس URL ارسال می شود و یا در کوکی مرورگر ذخیره می شود. حمله کننده با بدست آوردن این شناسه می تواند خود را به عنوان کاربر مجاز تعریف کند. روشهای مختلفی را نیز برای بدست آوردن این شناسه به کار می گیرند، یکی از این روش ها تولید تصادفی شناسه و فرستادن آن به سرور است. در روش دیگر حمله کننده به دنبال الگوریتم های خاص است تا بتواند شناسه های معتبر را پیدا کند.
در نتیجه نرم افزارها باید توابع مدیریت نشست را قوی کنند که این کار با استفاده از الگوریتم های تصادفی انجام می شود، یا با امکان تغییر شناسه کاربر انجام می شود و یا اینکه اجازه مدیریت نشست به کاربر داده شود تا هر زمان که لازم بود خودش بتواند نشست را پایان دهد. یک روش دیگر نیز تعیین مدت زمانی خاص برای اعتبار نشست است که اگر در طی این مدت کاری انجام نشد، نشست پایان یابد. همچنین می توان به گونه ای تنظیمات انجام داد که این شناسه در کوکی ها و URL نباشد.
در این نوع کدهای اسکریپتی به نرم افزار تزریق می شوند ولی یک تفاوت اساسی وجود دارد و آن هم هدف حمله است. برخلاف تزریق که هدفش پایگاه داده بود و برای کاربر مشکلی وجود نداشت، در این حمله هدف اجرای کد بر روی مرورگر کاربر است. در این حمله کدها روی سرور اجرا نمی شوند، اما زمانی که بعد از درخواست کاربر، این کدها به مرورگر منتقل می شوند، مرورگر این کدها را اجرا می کند و اطلاعات کاربر از طریق آن به حمله کننده می رسد. یکی از روش های جلوگیری از این حمله Encode کردن داده های کاربری است. برای کسب اطلاعات و توضیحات بیشتر می توانید به مقاله Cross-Site Scriptting یا XSS ، رایج ترین نوع حمله وردپرس مراجه نمایید.
در این نوع حمله به صفحات وب هدف اصلی حمله کننده، اکانت های پیش فرض، صفحات استفاده نشده، نقص های اصلاح نشده و فایل های بدون امنیت است. مثلا زمانی که لیست دایرکتوری روی سرور غیر فعال نشده باشد، حمله کننده به این فایل ها دست پیدا می کند، آن ها را decompile می کند و با دسترسی به کد ها نواقص کنترل های دسترسی را می فهمد. در نتیجه هم تولید کننده و هم استفاده کننده نرم افزار باید اقدامات امنیتی لازم را انجام دهند و نقشه ای از پیکر بندی امن تهیه کرده و آن را در مکان نرم افزار اجرا کنند.
در این روش که معمولا حمله توسط فردی انجام می شود که به داده های حساس یا نسخه پشتیبان آن ها دسترسی دارد، بدین ترتیب چون به صورت عادی به داده های رمز گذاری شده دسترسی نمی یابد کلید ها را سرقت می کند و یا داده های در حال انتقال را سرقت می کند. باید توجه شود هر داده حساسی که در مسیر بین سرور تا کاربر حرکت می کند، امنیتش در خطر می افتد. برای اینکه از حمله به این داده ها جلوگیری شود باید داده ها رمز گذاری شوند و داده های غیر ضروری حذف شوند. یکی از بهترین راه ها این است که برای مسیر انتقال داده بین سرور و کاربر از پروتکل های رمز نگاری قوی مثل TLS باید استفاده شود.
امنیت وب سرور ها بسیار مهم است که دلایل آن در مقاله لینک داده شده به طور مفصل شرح داده شده اند. برای حفظ امنیت وب سرور ها نیز روش های زیادی وجود دارد که جهت اطلاع از آن ها به مقاله مربوط به آن می توانید مراجعه کنید. در این مقاله نیز با چند مورد از مهمترین انواع حمله به صفحات وب آشنا شدید.