وبلاگِ آریان

what is clickjacking

Clickjacking ( دزدی کلیک ) چیست؟ و چگونه انجام می شود؟

Clickjacking نوعی از حملات هکر هاست که میتونن مارو به جایی که نمیخوایم بفرستن یا کاری که نمیخوایم رو بکنن !!!

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

به طور معمول، clickjacking با نمایش یک صفحه یا یک عنصر HTML نامرئی در داخل iframe، در بالای صفحات که کاربران اون رو میبینن انجام میشه. یعنی کاربرها فکر میکنن که بر روی چیزی که می بینن کلیک می کنن اما در حقیقت روی عناصر نامرئی که قابل مشاهده نیست کلیک کردن.

انواع مختلف حملات Clickjacking

  • دزدی لایک (Likejacking): تکنیکی هست که در اون لایک های شبکه های اجتمائی مثل فیس بوک و یا اینستاگرام دستکاری می شن. که باعث می شه که کاربرها صفحاتی را که اصلا دوست ندارن و یا ندیده ان، لایک کنن.
    مثلا شما روی دکمه دانلود کلیک میکنین اما در بین راه که دکمه شما رو به لینک دانلود بفرسته میفرستتون به یک آدرس دیگه و بعد اتوماتیک شما رو به آدرس اصلی هدایت میکنه.
  • جاسوسی (Cursorjacking): یک روش اصلاح UI هست که مکان نما رو برای موقعیتی که کاربر به موقعیت دیگری میره، تغییر می ده. Cursorjacking به آسیب پذیری های فلش و مرورگر فایرفاکس متکی هست.
    برای مثال شما فکر میکنین که روی دکمه دانلود زدین ولی در حقیقت کاری میکنه که نقطه ای غیر جایی که کلیک کردین انتخاب بشه. فکر کنم این باگ تا حدودی برطرف شده باشه.

 مثالی برای حمله Clickjacking

  • ابتدا هکر یک صفحه جذاب ایجاد می کنه (به عنوان مثال وعده شارژ رایگان رایگان)
  • در پس زمینه، صفحه ای رو که امکان انتقال پول وجود داشته باشد را فراهم می کند(صفحات بانکی) و بعد صفحه جعلی خودش رو با استفاده از پارامترهای پرس و جو برای قرار دادن جزئیات بانکی، بارگیری می کنه.
  • صفحه جعلی بانک در بالای یک صفحه با عنوان “شارژ رایگان” در یک iframe نامرئی نمایش داده می شه. که کاربر با کلیک بر روی دکمه “دریافت شارژ” دقیقا بر روی “تأیید انتقال” کلیک می کند.
    این طوری خریدی رو انجام میده که خودش تاییدش نکرده ولی با عستفاده از این حمله روی دکمه دیگه ای کلیک شده.

تو این مثال دیدیم که توی یک حمله Clickjacking، میشه عملیات فیشینگ و سرقت اطلاعات هم انجام داد. همچنین توی این حمل ها ردیابی هکر نیز غیر ممکنه چرا که کاربر خود بر روی لینک کلیک کرده(متئسفانه).

توضیح در باره چگونگی انجام حمله Clickjacking

اقدامات لازم برای مقابله با Clickjacking

دو روش کلی برای دفاع در برابر clickjacking هست:

  • روش های سمت کاربر (Client-side): پرکاربرد ترین اون Frame Busting نامیده می شه. روش های سمت کاربر می تواند در بعضی موارد تاثیر گذار باشه، اما می شه اون ها رو به آسونی دور زد.
  • روش های سمت سرور (Server-side): پرکاربرد ترین اون X-Frame-Options هست. روش های سمت سرور توسط کارشناسان به عنوان یک روش موثر برای دفاع در برابر حملات کلیک توصیه می شن.

حملات کلیک با استفاده از X-Frame-Options

X-Frame-Options به عنوان بخشی از پاسخ HTTP یک صفحه وب هست و نشان می ده که آیا یک مرورگر مجاز به رندر یک صفحه در داخل تگ <FRAME> یا <IFRAME> نیست.

سه مقدار برای هدر X-Frame-Options وجود دارد:

  • DENY: یه هیچ دامنه ای برای نمایش این صفحه در یک قاب اجازه نمی ده.
  • SAMEORIGIN: اجازه می ده صفحه فعلی در یک قاب در صفحه دیگری نمایش داده بشه، اما فقط در دامنه فعلی.
  • ALLOW-FROM URI: اجازه می ده صفحه فعلی در یک قاب نمایش داده بشه، اما فقط در یک URI خاص. (به عنوان مثال devdon.ir/frame-page).

X-Frame-Options به ناشران محتوا اجازه می ده تا محتوای خودشون رو در یک قاب نامرئی استفاده کنن. گزینه DENI امن ترین هست، و از هر گونه استفاده از صفحه فعلی در یک قاب جلوگیری می کنه. اما به طور معمول، SAMEORIGIN مورد استفاده قرار می گیره. چون استفاده از فریم ها رو فعال می کنه، و اون ها رو به دامنه فعلی محدود می کنه.

محدودیت های X-Frame-Options

  • برای فعال کردن گزینه SAMEORIGIN توی یک وب سایت. هدر X-Frame-Options باید به عنوان بخشی از پاسخ HTTP برای هر صفحه جداگانه بازگردانده شود (نمیشه روی cross-site اعمالش کرد).
  • X-Frame-Options از یک سری دامنه های مجاز پشتیبانی نمی کنه(یعنی فقط اون دامنه ای که مشخص کردیم کار میکنه). بنابراین با سایت های چند دامنه کار نمی کنه که نیاز به نمایش محتوی قاب بین همه دامنه ها باشه.
  • فقط یک گزینه رو میشه نوی یک صفحه استفاده کرد، برای مثال ممکنه همون صفحه رو به عنوان یک قاب در وب سایت فعلی و سایت خارجی نمایش نده.
  • گزینه ALLOW-FROM توسط تمام مرورگرها پشتیبانی نمی شه.
  • X-Frame-Options یک گزینه منسوخ در اغلب مرورگرها هست.

آیا سایت شما آسیب پذیر به حملات Clickjacking است؟

یک راه برای آزمایش این آسیب پذیری، ایجاد یک صفحه HTML و تلاش برای اضافه کردن یک صفحه حساس از وب سایت شما توی یک iframe هست. می تونید از کد زیر استفاده کنید که در آسیب پذیری های OWASP هم ارائه شده:

<html>
<head>
<title>این صفحه برای Clickjacking آسیب پذیر است</title>
</head>
<body>
<p>Website is vulnerable to Clickjacking!</p>
<iframe src="http://www.yoursite.com/sensitive-page" width="500" height="500"></iframe>
</body>
</html>

حالا صفحه HTML رو توی یک مرورگر باز کنید و به صورت زیر ارزیابی کنید:

  • اگر وب سایت برای Clickjacking آسیب پذیر باشه، پیام “Website is vulnerable to Clickjacking!” رو میبینین.
  • اگه این پیام رو ندیدین، صفحه شما به Clickjacking آسیب پذیر نیست.

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

برای تمرین چک کنین ببینین وبلاگ منم این آسسیب پذیری رو داره یا نه.

امیدوارم که این مطلب کاربردی باشه براتون.
ممنون که کامنت میزارین.

 آریان:))

آریان عمرانی

آریان عمرانی

برنامه نویس و گیک عاشق ساختن