آموزش کامل حمله کلیک جکینگ (ClickJacking) و روشهای جلوگیری از آن
- کورش سنایی
- ۱۱ آبان ۱۴۰۴
- زمان مطالعه: 4 دقیقه
در دنیای تست نفوذ و امنیت وب، یکی از حملاتی که بر پایهی فریب کاربر انجام میشود، حمله کلیک جکینگ (ClickJacking) است. این نوع حمله با هدف تغییر رفتار کاربر از طریق رابط گرافیکی (UI Redressing) صورت میگیرد. در این روش، کاربر فریب داده میشود تا روی دکمه یا لینکی کلیک کند که در واقع مربوط به وبسایت دیگری است. در ادامه به بررسی مفهوم، نمونهها و روشهای جلوگیری از کلیک جکینگ میپردازیم. همچنین اگر به وب هکینگ علاقه دارید به دوره هک سایت ما مراجعه کنید.
🧩 کلیک جکینگ چیست؟
حمله کلیک جکینگ نوعی حملهی رابط کاربری است که در آن، مهاجم صفحهای جعلی یا «decoy» طراحی میکند و درون آن با استفاده از iframe محتوای یک سایت دیگر را بهصورت نامرئی جاسازی میکند. وقتی کاربر روی بخشی از این صفحه کلیک میکند، در واقع روی عنصر واقعی سایت هدف کلیک کرده است، نه روی چیزی که تصور میکند. بهعنوان مثال، کاربر روی دکمهی «برنده شدن جایزه» کلیک میکند، اما در پشت صحنه، دکمهی «پرداخت» در سایت بانکی فشرده میشود.
این حمله از CSRF متفاوت است، زیرا کاربر در کلیک جکینگ خودش عمل کلیک را انجام میدهد؛ در حالیکه در CSRF، درخواست بدون دخالت کاربر ارسال میشود.
⚙️ نحوه اجرای حمله کلیک جکینگ
در اجرای کلیک جکینگ، مهاجم با استفاده از CSS و iframeها لایههای شفاف و نامرئی ایجاد میکند. برای مثال، یک iframe از سایت هدف در بالای صفحه decoy قرار داده میشود و با خاصیت opacity: 0.0001 و z-index: 2 کاملاً نامرئی میشود. کاربر با کلیک روی محتوای ظاهری صفحه، در واقع روی iframe مخفی کلیک میکند.
حتی مرورگرهایی مثل Chrome از نسخه 76 مکانیزم تشخیص شفافیت (transparency threshold) دارند، اما هنوز مرورگرهایی مثل Firefox در برابر این حملات آسیبپذیرند.
🧰 ابزار Clickbandit
تست دستی کلیک جکینگ میتواند زمانبر باشد، اما ابزار Clickbandit در مجموعه Burp Suite این کار را آسان میکند. با Clickbandit میتوانید مراحل کلیک را در مرورگر انجام دهید و ابزار بهصورت خودکار یک HTML آماده برای اثبات مفهوم (PoC) تولید میکند. این ابزار برای متخصصان تست نفوذ ابزاری ایدهآل جهت ساخت PoC در چند ثانیه است.
✍️ کلیک جکینگ با فرمهای از پیش پر شده
برخی وبسایتها امکان پر کردن مقادیر فرم را از طریق پارامترهای GET فراهم میکنند. در این حالت، مهاجم میتواند لینک هدف را تغییر داده و مقادیر دلخواه را در URL وارد کند تا هنگام کلیک کاربر روی فرم شفاف، اطلاعات مدنظرش ارسال شود.
🧱 اسکریپتهای Frame Busting
برای مقابله با کلیک جکینگ، برخی وبسایتها از اسکریپتهای Frame Busting استفاده میکنند. این اسکریپتها بررسی میکنند که صفحه درون iframe باز نشده باشد یا فریمها شفاف نباشند. با این حال، مهاجمان میتوانند این مکانیزم را با ویژگی HTML5 به نام sandbox خنثی کنند.
وقتی iframe با ویژگی sandbox="allow-forms" یا sandbox="allow-scripts" ساخته شود، اسکریپتهای frame-busting دیگر نمیتوانند تشخیص دهند که فریم در top-window نیست. به همین دلیل، این روشها کافی نیستند.
⚔️ ترکیب ClickJacking با حملات XSS
در سطح پیشرفتهتر، مهاجمان از کلیک جکینگ بهعنوان حامل برای DOM XSS استفاده میکنند. در این نوع ترکیبی، کاربر با کلیک روی iframe آلوده، کد مخرب XSS(آموزش XSS) را اجرا میکند. این حملات معمولاً با هدف سرقت کوکیها، نشستها یا تزریق کدهای جاوااسکریپتی صورت میگیرند.
🔁 کلیک جکینگ چند مرحلهای
در حملات چند مرحلهای، مهاجم کاربر را وادار به انجام چند کلیک متوالی میکند تا یک فرآیند کامل مثل خرید اینترنتی یا انتقال وجه انجام شود. این روش نیازمند دقت بالایی در همترازی لایهها و موقعیت دکمههاست تا کاربر متوجه چیزی نشود.
🧩 روشهای جلوگیری از کلیک جکینگ
مهمترین راهکارها برای جلوگیری از حملات کلیک جکینگ در سطح سرور و مرورگر عبارتاند از:
🔐 هدر X-Frame-Options
یکی از متداولترین راهکارهاست که با تنظیم مقادیر زیر در هدر HTTP از فریم شدن سایت جلوگیری میکند:
X-Frame-Options: DENYبرای جلوگیری کاملX-Frame-Options: SAMEORIGINبرای اجازه دادن فقط از همان دامنه
🧩 سیاست امنیت محتوا (CSP)
در CSP، میتوان از دستور frame-ancestors استفاده کرد تا دامنههای مجاز برای فریم کردن صفحه تعیین شوند:
Content-Security-Policy: frame-ancestors 'self';
یاContent-Security-Policy: frame-ancestors example.com;
استفاده همزمان از CSP و X-Frame-Options در قالب دفاع چند لایه (Defense in Depth) بهترین روش مقابله با کلیک جکینگ است.
✅ جمعبندی
حمله کلیک جکینگ یکی از روشهای فریب کاربران برای انجام عملیات ناخواسته است که با ترکیب iframeهای شفاف و طراحی CSS صورت میگیرد. شناخت دقیق این حمله، استفاده از هدرهای امنیتی مناسب و سیاستهای CSP برای جلوگیری از آن ضروری است. اگر در حوزه تست نفوذ فعالیت دارید، آشنایی با ابزارهایی مثل Burp Clickbandit و روشهای جلوگیری از فریم شدن سایت، از مهارتهای پایهای و حیاتی است.





