استغلال Clickjacking لتنفيذ هجوم DOM XSS خبيث

x32x01
  • بواسطة x32x01 ||
  • #1
🛡 استغلال ثغرة Clickjacking لتنفيذ هجوم DOM-based XSS 🧑‍💻
🧩 في عالم أمان تطبيقات الويب، استغلال الثغرات بيتم غالبًا عبر دمج أكثر من نوع هجوم مع بعض. من أخطر الأمثلة إن المهاجم يستخدم ثغرة Clickjacking علشان يفعل هجوم DOM-based XSS بدون ما الضحية ياخد باله.
خلّيني أشرح كل جزء بطريقة بسيطة وواضحة علشان تفهم السيناريو كامل 👇



1️⃣ ما هي ثغرة Clickjacking؟ 🎯​

ثغرة Clickjacking هي هجوم يتم فيه خداع المستخدم للنقر على عنصر مختلف تمامًا عن اللي هو شايفه.
وبيحصل ده عن طريق:
✔ وضع عنصر أو طبقة شفافة فوق الصفحة
✔ المستخدم يفتكر إنه بيضغط على زر ظاهر
✖ لكنه في الحقيقة بيضغط على زر مخفي تحت الطبقة

وده ممكن يؤدي:
🚨 لتنفيذ عمليات خطيرة
🚨 تغيير إعدادات
🚨 تفعيل روابط أو أكواد خبيثة
كل ده بدون ما المستخدم يعرف.



2️⃣ ما هو DOM-based XSS؟ 🧠💻​

هجوم DOM-based XSS هو نوع خطير من ثغرات XSS، بيحصل لما:
✔ JavaScript في الصفحة يعدّل DOM
✔ ويدمج مدخلات المستخدم بشكل مباشر
✔ بدون أي فحص أو تنقية

المميز هنا إنه:
❌ ما بيرسلش البيانات الخبيثة للسيرفر
✔ كل الهجوم بيتم داخل المتصفح نفسه
✔ وبسبب خطأ في كود JavaScript



💥 كيف يتم دمج Clickjacking مع DOM-XSS؟​

هنا الفكرة العبقرية للمهاجم 👇
المهاجم بدل ما يعتمد على المستخدم إنه يفتح لينك فيه Payload…
يقوم يستخدم Clickjacking ليمكّن الضغط على رابط خبيث بدون ما المستخدم يشوفه أصلاً.

خطوات الهجوم:​

1️⃣ إنشاء صفحة خبيثة فيها iframe للصفحة الضعيفة
2️⃣ وضع طبقة شفافة فوق iframe
3️⃣ إغراء المستخدم (مثلاً: اضغط هنا تربح جائزة 🎁)
4️⃣ المستخدم ينقر →
5️⃣ وفي الحقيقة هو ينقر على الرابط الخبيث داخل iframe
6️⃣ الرابط يحتوي على Payload يفعّل DOM-based XSS



🔥 مثال عملي توضيحي​

نفترض إن الموقع فيه هذا الكود:
JavaScript:
var search = document.location.hash.substring(1);
document.getElementById('result').innerHTML = search;
الكود يأخذ أي شيء بعد الـ # من الرابط ويعرضه مباشرة داخل DOM.

إذا المهاجم استخدم:
HTML:
https://vulnerable.site#<img src=x onerror=alert(1)>
هينفّذ:
📌 alert(1)
✔ لأن innerHTML يسمح بحقن HTML
✔ بدون أي فلترة أو Sanitization

كيف يدخل Clickjacking هنا؟​

المهاجم ينشئ صفحة فيها:
  • iframe للموقع الضعيف
  • فوقه طبقة شفافة
  • المستخدم يضغط على مكان ظاهر
  • لكنه فعليًا يضغط على رابط الـ XSS داخل iframe
🎯 النتيجة: يتم تنفيذ DOM-XSS بدون ما المستخدم يشوف أي رابط أو يحس بحاجة.



🛡 كيفية الحماية من الهجوم؟​


1️⃣ منع Clickjacking​

استخدم أحد الهيدر التالية:
  • X-Frame-Options: DENY
  • X-Frame-Options: SAMEORIGIN
  • أو عبر الـ CSP:
Code:
Content-Security-Policy: frame-ancestors 'none';
🔒 يمنع تضمين الموقع داخل iframe.



2️⃣ فلترة المدخلات Input Validation​

أي مدخلات تُحقن داخل DOM يجب:
✔ ترميزها (HTML Encoding)
✔ منع استخدام innerHTML إلا عند الضرورة
✔ الاعتماد على textContent بدلًا من innerHTML



3️⃣ تطبيق Content Security Policy (CSP)​

مثال بسيط:
Code:
Content-Security-Policy: script-src 'self';
وده يمنع تنفيذ أي Script خارج الموقع،
وبالتالي حتى لو حصل DOM-XSS… مش هيتنفذ.



⚠️ الخلاصة​

دمج Clickjacking مع DOM-based XSS بيخلي الهجوم:
🔥 خبيث
🔥 صامت
🔥 صعب الاكتشاف

لذلك لازم المواقع:
✔ تمنع التضمين داخل iframe
✔ تفحص المدخلات
✔ تستخدم CSP
لأن الأمن مش مجرد Fix… الأمن عملية مستمرة.
 

المواضيع ذات الصلة

x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
871
x32x01
x32x01
x32x01
الردود
0
المشاهدات
206
x32x01
x32x01
x32x01
الردود
0
المشاهدات
438
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
الوسوم : الوسوم
clickjacking content security policy dom based xss dom xss web security x frame options أمن الويب ثغرات الواجهة الأمامية حقن javascript حماية التطبيقات
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,388
المشاركات
2,601
أعضاء أكتب كود
574
أخر عضو
الياس
عودة
أعلى