حملات csrf و xss و ddos و sql injection و ssrf

حملات csrf و xss و ddos و sql injection و ssrf

CSRF چیست ؟
CSRF مخفف cross site Request forgery attack (حمله ای از نوع درخواست میان سایتی) می باشد. فریب کاربر یک سایت به گونه ای که درخواست ناخواسته ای را به سرور آن سایت بفرستد.
 

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

 
جلوگیری از حملات CSRF 
مطمئن‌ترین راه برای جلوگیری از حملات، قراردادن یک توکن CSRF در ریکوئست‌های معتبر است.
این توکن باید:
مانند دیگر توکن‌های سشن، غیرقابل پیش‌بینی و به‌شدت تصادفی باشد.
رابطه یک‌به‌یک با سشن کاربر داشته باشد.
قبل از انجام هرگونه اقدام مرتبط با ریکوئست، به طور کامل و دقیق اعتبارسنجی شود.

یکی از مقدماتی‌ترین کارهایی که جلوی اغلب حملات فوق را می‌گیرد، چک کردن صفحه ارجاع (http refferer) پیش از تمامی اعمال مدیریتی (درج/حذف/ویرایش) است.


 

حملات XSS چیست؟

 
Cross site Scripting که با نام XSS هم شناخته می شود یک آسیب امنیتی در وب سایتهاست که به مهاجم اجازه می دهد تا با تزریق کدهای جاوا اسکریپت در سایت، تعاملات کاربران با یک وب سایت را به خطر بیاندازد. حملات XSS در VBScript، ActiveX، Flash و حتی CSS هم امکان پذیرند.

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

انواع حملات XSS 

سه نوع اصلی از حملات Cross-site Scripting وجود دارد: 

  1.  XSS ذخیره شده (Stored cross-site scripting)
  2.  XSS منعکس شده (Reflected)
  3.  XSS مبتنی بر (DOM (Document Object Model 
 

Stored cross-site scripting یا XSS ذخیره شده

یک نقص امنیتی XSS ذخیره شده (معروف به نوع I)، به همراه ورودی های کاربر نظیر فیلد نظرات (کامنت)، لاگ بازدیدکنندگان یا سایر ارجاعات به سرور، در دیتابیس ذخیره می شود. سپس کاربر مورد هدف، داده‌های ذخیره‌شده (که برای ارائه به مرورگر ایمن نشده‌اند) را از برنامه تحت وب دریافت می کند. به این ترتیب، هنگامی که هکر حمله را انجام می دهد، بار ترافیکی برای فیلتر XSS مرورگر قابل مشاهده نیست و کاربر در صورت بازدید از صفحه، می تواند به صورت تصادفی نقص امنیتی را فعال کند.

Reflected cross-site scripting یا XSS منعکس شده

نقص امنیتی XSS منعکس شده (معروف به نوع II)، یعنی یک اپلیکیشن اطلاعات ورودی کاربر را در زمان جستجو، بلافاصله با پیغام خطا پاسخ می دهد. در این حالت، داده‌های ورودی بدون ذخیره شدن برگشت داده شده و به هکرها اجازه می‌دهد تا اسکریپت‌های مخرب XSS را به جای آن تزریق کنند. برخلاف XSS ذخیره شده که هدف آن کاربران وب سایت هستند، XSS منعکس شده، خود وب سایت را هدف قرار می دهد.

DOM-based XSS یا XSS مبتنی بر (DOM (Document Object Model

این نوع حمله (معروف به نوع 0) در DOM، به عنوان بخشی از کدهای HTML انجام می شود. منبعی که کد مخرب در آن خوانده می شود می تواند یک URL یا یک عنصر خاص از HTML باشد.

 

چگونه از حملات XSS جلوگیری کنیم؟

به طور کلی، پیشگیری موثر از آسیب‌پذیری‌های XSS احتمالاً شامل ترکیبی از اقدامات زیر است:

استفاده از مرورگرهای ایمن و به روز

به دلایل زیادی از جمله رفع اشکالات، بهبود عملکرد، نصب ویژگی های جدید و اصلاح آسیب پذیری های امنیتی، مرورگرها همیشه باید به روز نگه داشته شود. به‌روزرسانی منظم آسیب‌پذیری‌ها را تا حد زیادی کاهش می‌دهد.

پاکسازی و اعتبارسنجی فیلدهای ورودی

فیلدهای ورودی رایج ترین نقطه ورود برای اسکریپت های حمله XSS هستند. بنابراین، همیشه باید هر گونه اطلاعات ورودی را بررسی کنید. اعتبارسنجی باید در سمت سرویس گیرنده و سمت سرور به عنوان یک اقدام احتیاطی اضافی انجام شود.

فایروال برنامه های وب

فایروال برنامه وب (WAF) می تواند ابزار قدرتمندی برای محافظت در برابر حملات XSS باشد. WAF ها می توانند ربات ها و سایر فعالیت های مخربی را که ممکن است نشان دهنده حمله باشد را فیلتر کنند. حملات را می توان قبل از اجرای هر اسکریپت مسدود کرد.

سیاست امنیت محتوا

یک خط مشی امنیت محتوا (CSP) می تواند عملکردهایی را که برای یک وب سایت لازم است را تعریف کند. می توان از آنها برای جلوگیری از پذیرش هرگونه اسکریپت توسط وب سایت استفاده کرد. این روش حملات XSS را کاملاً مسدود کند یا احتمال آن‌ها را تا حد زیادی کاهش دهد. برای اینکار می توان از ابزارهای NoScript نیز استفاده کرد.

حملات DoS و DDoS 

 

حمله denial-of-service یا همان (DoS) یک سرور را پر از ترافیک می‌کند و یک وب‌سایت یا منبع را از دسترس خارج می‌کند. حمله distributed denial-of-service  یا (DDoS) یک حمله DoS است که از چندین کامپیوتر یا ماشین به یک منبع هدف استفاده می‌کند درواقع  DDoS، نوعی حمله سایبری است که هدف آن بستن وب‌سایت، خدمات یا سایر منابع برای ایجاد اختلال در تجارت است. هر دو نوع حمله یک سرور یا برنامه وب را با هدف قطع کردن خدمات پر ترافیک می‌کنند.
از آنجایی که سرور پر از بسته‌های داده‌های کاربر (TCP/UDP) است که امکان پردازش ندارد، ممکن است از کار بیفتد، داده‌ها خراب شوند و منابع ممکن است به اشتباه هدایت شوند یا حتی سیستم را از کار بیاندازد.
در واقع تفاوت اصلی بین DoS و DDoS این است که DoS یک حمله به یک سیستم دارد، در حالی که DDoS شامل چندین سیستم است که به یک سیستم واحد حمله می‌کنند. Distributed Denial of Service یک استراتژی پیشرفته‌تر از حملات Denial of Service (DoS) است. در DoS، یک سیستم واحد تلاش می‌کند تا سیستم دیگری را بیش از حد پر ترافیک کند تا دسترسی به خدمات خود را مسدود کند.

 

انواع حملات DoS و DDoS
حملات DoS و DDoS می‌توانند اشکال مختلفی داشته باشند و از ابزارهای مختلف مورداستفاده قرار گیرند که ممکن است یک شرکت تجارت خود را از دست بدهد، یک رقیب را فلج کند یا صرفاً ایجاد مشکل نماید و سریعاً رفع شود. در زیر برخی از اشکال رایج این‌گونه حملات آورده شده است.
 
حمله قطره اشک (Teardrop Attack)
حمله قطره اشکی یک حمله DoS است که قطعات بی‌شماری از داده‌های پروتکل اینترنت (IP) را به یک شبکه ارسال می‌کند. هنگامی که شبکه سعی می‌کند قطعات را مجدداً در بسته‌های اصلی آن‌ها کامپایل کند، نمی‌تواند.
به عنوان مثال، مهاجم ممکن است بسته‌های داده بسیار بزرگی را بگیرد و آن‌ها را به چند قطعه تقسیم کند تا سیستم موردنظر دوباره جمع شود. با این حال، مهاجم نحوه جداسازی بسته را تغییر می‌دهد تا سیستم هدف را گیج کند که پس از آن قادر به جمع‌آوری مجدد قطعات در بسته‌های اصلی نیست.
 
حمله سیل (Flooding Attack)
حمله سیل یک حمله DoS است که چندین درخواست اتصال را به یک سرور ارسال می‌کند اما برای تکمیل پروسه اتصال پاسخ نمی‌دهد زیرا این حمله‌ها، سعی می‌کند با ارسال درخواست و مشغول نگه داشتن سرور، ظرفیت سرور برای پاسخ‌گویی به درخواست‌ها را به حداقل ممکن برساند و مانع دسترسی کاربران به سرویس شود.
به عنوان مثال، مهاجم ممکن است درخواست‌های مختلفی را برای اتصال به عنوان یک کلاینت ارسال کند، اما زمانی که سرور سعی می‌کند برای تأیید اتصال مجدداً ارتباط برقرار کند، مهاجم از پاسخ دادن خودداری می‌کند. پس از تکرار بی‌شمار این فرآیند، سرور چنان غرق در درخواست‌های معلق می‌شود که کلاینت‌های واقعی نمی‌توانند به آن متصل شوند و سرور «مشغول» یا حتی از کار می‌افتد.
 
حمله تکه‌تکه شدن IP(IP Fragmentation Attack)
حمله IP Fragmentation نوعی حمله DoS است که بسته‌های شبکه تغییریافته‌ای را تحویل می‌دهد که شبکه دریافت‌کننده نمی‌تواند آن‌ها را دوباره جمع کند. شبکه با بسته‌های حجیم مونتاژ نشده گرفتار می‌شود و تمام منابع خود را مصرف می‌کند.
 
حمله حجمی (Volumetric Attack)
حمله حجمی نوعی حمله DDoS است که برای هدف قرار دادن منابع پهنای باند استفاده می‌شود. به‌عنوان‌مثال، مهاجم از یک بات نت برای ارسال حجم بالایی از بسته‌ها به یک شبکه استفاده می‌کند که این باعث می‌شود که خدمات کاهش یابد یا حتی به طور کامل متوقف شود.
 
حمله پروتکلی (Protocol Attack)
حمله پروتکلی نوعی حمله DDoS است که از نقاط ضعف لایه‌های 3 و 4 مدل OSI استفاده می‌کند. به‌عنوان‌مثال، مهاجم ممکن است از توالی اتصال TCP سوءاستفاده کند، با مصرف تمام ظرفیت جدول موجود در سرورهای برنامه وب یا منابع واسطه‌ای مانند فایروال‌ها و توازن بار باعث ایجاد اختلال در سرویس می‌شوند.
 
حمله مبتنی بر برنامه (Application-based Attack)
حمله مبتنی بر برنامه نوعی حمله DDoS است که لایه 7 مدل OSI را هدف قرار می‌دهد. به‌عنوان‌مثال یک حمله است که در آن مهاجم درخواست‌های جزئی پروتکل انتقال ابرمتن (HTTP) را ارسال می‌کند اما آن‌ها را تکمیل نمی‌کند. هدرهای HTTP به‌صورت دوره‌ای برای هر درخواست ارسال می‌شوند و در نتیجه منابع شبکه بسته می‌شود.
مهاجم به حمله ادامه می‌دهد تا زمانی که هیچ اتصال جدیدی توسط سرور ایجاد نشود. شناسایی این نوع حمله بسیار دشوار است زیرا به جای ارسال بسته‌های خراب، بسته‌های جزئی را ارسال می‌کند و از پهنای باند کمی استفاده می‌کند.
 
از جمله مواردي که مي‌توان پيش از حمله برنامه‌ريزي کرد، عبارتند از:
پيکربندي مناسب اپليکيشن‌هاي سرويس‌دهنده
تماس با سرويس‌دهنده اينترنت سرور يا سايت و مرور پروتکل‌هاي قابل انجام در شرايط حمله
تهيه فهرستي از IPها و پروتکل‌هايي که مي‌توان در زمان حملات، به آنها اجازه دسترسي داد
راه اندازي تجهيزات نرم‌افزاري و سخت‌افزاري مورد نياز براي مقابله با حملات
محدود کردن مواردي که ممکن است مورد حمله قرار گيرد
برطرف‌سازي نقاط ضعف امنيتي مرتبط
استفاده از فايروال قوي در سيستم‌ها و سرورها
 
ابزارهاي پيشگيري از حملات DOS و DDOS
فايروال‌ها (Firewall)
به گونه اي تنظيم مي‌شوند که طبق قوانيني، پروتکل‌ها را بپذيرند يا رد کنند.
براي مثال در صورتي که حملاتي از سمت چند IP غيرمعمول اتفاق بيفتد، مي‌توان با تعيين يک rule نسبت به ناديده گرفتن بسته‌هاي ارسالي از سمت مهاجمان اقدام کرد.
سوئيچ‌ها
بيشتر switchها داراي قابليت Rate-Limiting و ACL (Access Control List) هستند. بعضي از سوئيچ‌ها به صورت خودکار قابليت‌هايي براي کشف و اصلاح حملات DOS ارائه مي‌کنند.
(لازم به توضيح است Rate limiting راهکاري براي کنترل ترافيک ورودي و خروجي به/از يک شبکه و ACL فيلتري است که به وسيله آن مي‌توان تعيين کرد که چه IPهايي اجازه ورود يا خروج از شبکه را داشته باشند.)
روترها
Router‌ها نيز به مانند سوئيچ‌ها قابليت Rate-Limiting وACL دارند.
(البته به صورت دستي نيز تنظيم مي‌شوند.) روتر‌ها مي‌توانند طوري پيکربندي شوند که از حملات ساده ping با فيلترکردن پروتکل‌هاي غيرضروري جلوگيري کنند.
Application Front End Hardware
سخت‌افزار هوشمندي است که سر راه شبکه و قبل از رسيدن ترافيک به سرور قرار مي‌گيرد و packetها را به محض ورود به سيستم، آناليز کرده و آنها را براساس اولويت، معمولي بودن يا خطرناک بودن شناسايي مي‌کند.
پيشگيري بر پايه IPS
سيستم‌هاي پيشگيري از نفوذ IPS (Intrusion-prevention systems) در حملاتي که Signature Associated هستند، موثر عمل مي‌کنند.
 

دفاع بر اساس DDS DDS (DOS Defense System)

قادر است حملات DOS Connection-Based و محتويات مشروع اما داراي قصد بد را بلاک مي‌کنند.
(لازم به توضيح استDDS اولين خط دفاعي در برابر حملات DDoS و همچنين جريان سيل‌آساي درخواست سرويس است.)

Blackholing و Sinkholing

با استفاده از اين دو روش، تمامي ترافيک DNS مورد تهاجم يا نشاني IP به سياهچاله فرستاده مي‌شود.

(سياهچاله جايي است که بسته‌ها به آن ريخته مي‌شوند و هيچ اطلاعاتي در مورد بسته‌هاي افتاده به منبع ارسال نمي‌شود.)
از مخزن DNS براي هدايت و جلوگيري از حملات و فعاليت‌هاي مخرب با هدايت مجدد ترافيک بد به يک سرور جايگزين استفاده مي‌شود.

Clean pipes

در اين روش، ترافيک با روش‌هايي ازجمله پروکسي‌ها، تونل‌ها يا حتي مدارات مستقيم که ترافيک بد و ديگر حملات اينترنتي را تفکيک مي‌کنند، عبور مي‌کنند.

سياه چاله

اين روش تمام ترافيک را مسدود کرده و به سمت سياهچاله (جايي که بسته‌ها دور ريخته مي‌شوند) هدايت مي‌کند.

سيستم‌هاي کشف نفوذ

سيستم‌هاي کشف نفوذ (intrusion detection systems) به همراه فايروال‌ها به کار مي‌روند تا به صورت خودکار در مواقع لزوم ترافيک را مسدود کنند.

سرورها

پيکربندي مناسب اپليکيشن‌هاي سرويس‌دهنده در به حداقل رساندن تأثير حمله DDoS تأثير فراواني دارد.

پهناي باند زياد

تهيه پهناي باند زياد يا شبکه‌هاي افزونه مي‌تواند براي مقابله با حملات DdoS و DoS مؤثر واقع شود.

 

 

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

 

نحوه جلوگیری از حمله sql injection

برای جلوگیری از حمله sql injection و مقابله با باگ موارد زیر را در نظر بگیرید:

  1. اعتبارسنجی ورودی، افزایش امنیت فرم‌ها برای جلوگیری از ورود کوئری غیرمجاز و بررسی دایمی اطلاعات ورودی قبل از ارسال آنها به دیتابیس به عنوان Query مثلا اینکه کاراکترهای غیرمجاز نداشته باشد یا ورودی مستقیم نگیرد.
  2. ایجاد چند کاربر با دسترسی های مختلف به دیتابیس
  3. توجه کنید پیغام‌های خطایی که به کاربر نمایش داده می‌شود. مثلا “نام کاربری نمی‌تواند شامل اعداد باشد” هکر را آگاه می‌کنید که نباید در نام کاربری اعداد وارد کند. طوری این پیغام‌ها را طراحی کنید که نقاط ضعف سایت برای هکر نمایان نشود.
  4. آپدیت محتوای سایت به جدیدترین نسخه
  5. بررسی منظم دسترسی کاربران به دیتابیس. این کار باعث می‌شود اگر کاربری هک شده باشد، متوجه شوید و دسترسی آن را قطع کنید.
  6. افزایش امنیت سایت و هاست و دیتابیس آن
  7. استفاده از پسوردهای قوی و پیچیده برای دیتابیس

 

 

حمله SSRF چیست؟

Server-Side Request Forgery (SSRF) یک آسیب‌پذیری امنیتی وب است که به مهاجم اجازه می‌دهد تا برنامه سمت سرور را وادار کند تا درخواست‌های HTTP را به دامنه دلخواه خود به انتخاب مهاجم ارسال کند.در یک حمله معمولی SSRF، مهاجم ممکن است باعث شود سرور به سرویس‌های داخلی در زیرساخت سازمان متصل شود. در موارد دیگر، آنها ممکن است بتوانند سرور را مجبور به اتصال به سیستم های خارجی دلخواه کنند

این SSRF مخفف Server Side Request Forgery هست و به نفوذگر اجازه ارسال درخواست های با امضاهای جعلی به سمت یه سرور آسیب پذیر میده و خب چون اون سرور آسیب پذیره این درخواست ها معتبر شناخته میشن و به عنوان یه نود معتبر توی شبکه معرفی میشه. از این طریق کنترل های فایروال دور خورده و نفوذگر به سرویس های داخل شبکه دست پیدا می کنه.

 

 

نویسنده :
مجید پورداود
  • مجید پورداود
  • مهندس نرم افزار و تحلیلگر ارشد سیستم های کامپیوتری تحت وب می باشم. از سال 1395 برنامه نویسی را شروع کردم و به زبان های php (فریم ورک laravel -codeigniter)  و زبان جاوا اسکریپت (فریم ورک express.js-nest.js)  تسلط دارم.  

ثبت دیدگاه جدید

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *