- بواسطة x32x01 ||
🛡 استغلال ثغرة Clickjacking لتنفيذ هجوم DOM-based XSS 🧑💻
🧩 في عالم أمان تطبيقات الويب، استغلال الثغرات بيتم غالبًا عبر دمج أكثر من نوع هجوم مع بعض. من أخطر الأمثلة إن المهاجم يستخدم ثغرة Clickjacking علشان يفعل هجوم DOM-based XSS بدون ما الضحية ياخد باله.
خلّيني أشرح كل جزء بطريقة بسيطة وواضحة علشان تفهم السيناريو كامل 👇
وبيحصل ده عن طريق:
✔ وضع عنصر أو طبقة شفافة فوق الصفحة
✔ المستخدم يفتكر إنه بيضغط على زر ظاهر
✖ لكنه في الحقيقة بيضغط على زر مخفي تحت الطبقة
وده ممكن يؤدي:
🚨 لتنفيذ عمليات خطيرة
🚨 تغيير إعدادات
🚨 تفعيل روابط أو أكواد خبيثة
كل ده بدون ما المستخدم يعرف.
✔ JavaScript في الصفحة يعدّل DOM
✔ ويدمج مدخلات المستخدم بشكل مباشر
✔ بدون أي فحص أو تنقية
المميز هنا إنه:
❌ ما بيرسلش البيانات الخبيثة للسيرفر
✔ كل الهجوم بيتم داخل المتصفح نفسه
✔ وبسبب خطأ في كود JavaScript
المهاجم بدل ما يعتمد على المستخدم إنه يفتح لينك فيه Payload…
يقوم يستخدم Clickjacking ليمكّن الضغط على رابط خبيث بدون ما المستخدم يشوفه أصلاً.
2️⃣ وضع طبقة شفافة فوق iframe
3️⃣ إغراء المستخدم (مثلاً: اضغط هنا تربح جائزة 🎁)
4️⃣ المستخدم ينقر →
5️⃣ وفي الحقيقة هو ينقر على الرابط الخبيث داخل iframe
6️⃣ الرابط يحتوي على Payload يفعّل DOM-based XSS
الكود يأخذ أي شيء بعد الـ # من الرابط ويعرضه مباشرة داخل DOM.
إذا المهاجم استخدم:
هينفّذ:
📌
✔ لأن
✔ بدون أي فلترة أو Sanitization
🔒 يمنع تضمين الموقع داخل iframe.
✔ ترميزها (HTML Encoding)
✔ منع استخدام innerHTML إلا عند الضرورة
✔ الاعتماد على textContent بدلًا من innerHTML
وده يمنع تنفيذ أي Script خارج الموقع،
وبالتالي حتى لو حصل DOM-XSS… مش هيتنفذ.
🔥 خبيث
🔥 صامت
🔥 صعب الاكتشاف
لذلك لازم المواقع:
✔ تمنع التضمين داخل iframe
✔ تفحص المدخلات
✔ تستخدم CSP
لأن الأمن مش مجرد Fix… الأمن عملية مستمرة.
🧩 في عالم أمان تطبيقات الويب، استغلال الثغرات بيتم غالبًا عبر دمج أكثر من نوع هجوم مع بعض. من أخطر الأمثلة إن المهاجم يستخدم ثغرة 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; إذا المهاجم استخدم:
HTML:
https://vulnerable.site#<img src=x onerror=alert(1)> 📌
alert(1)✔ لأن
innerHTML يسمح بحقن HTML✔ بدون أي فلترة أو Sanitization
كيف يدخل Clickjacking هنا؟
المهاجم ينشئ صفحة فيها:- iframe للموقع الضعيف
- فوقه طبقة شفافة
- المستخدم يضغط على مكان ظاهر
- لكنه فعليًا يضغط على رابط الـ XSS داخل iframe
🛡 كيفية الحماية من الهجوم؟
1️⃣ منع Clickjacking
استخدم أحد الهيدر التالية:X-Frame-Options: DENYX-Frame-Options: SAMEORIGIN- أو عبر الـ
CSP:
Code:
Content-Security-Policy: frame-ancestors 'none'; 2️⃣ فلترة المدخلات Input Validation
أي مدخلات تُحقن داخل DOM يجب:✔ ترميزها (HTML Encoding)
✔ منع استخدام innerHTML إلا عند الضرورة
✔ الاعتماد على textContent بدلًا من innerHTML
3️⃣ تطبيق Content Security Policy (CSP)
مثال بسيط: Code:
Content-Security-Policy: script-src 'self'; وبالتالي حتى لو حصل DOM-XSS… مش هيتنفذ.
⚠️ الخلاصة
دمج Clickjacking مع DOM-based XSS بيخلي الهجوم:🔥 خبيث
🔥 صامت
🔥 صعب الاكتشاف
لذلك لازم المواقع:
✔ تمنع التضمين داخل iframe
✔ تفحص المدخلات
✔ تستخدم CSP
لأن الأمن مش مجرد Fix… الأمن عملية مستمرة.