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

x32x01
  • بواسطة x32x01 ||
🛡 استغلال ثغرة 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
المشاهدات
698
x32x01
x32x01
x32x01
الردود
0
المشاهدات
698
x32x01
x32x01
x32x01
الردود
0
المشاهدات
98
x32x01
x32x01
x32x01
الردود
0
المشاهدات
887
x32x01
x32x01
x32x01
الردود
0
المشاهدات
854
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,094
المشاركات
2,299
أعضاء أكتب كود
513
أخر عضو
Alaa69
عودة
أعلى