- بواسطة x32x01 ||
🛡 استغلال ثغرة Clickjacking لتنفيذ هجوم DOM-based XSS 🧑💻
🧩 في عالم أمان تطبيقات الويب، استغلال الثغرات بيتم غالبًا عبر دمج أكثر من نوع هجوم مع بعض. من أخطر الأمثلة إن المهاجم يستخدم ثغرة Clickjacking علشان يفعل هجوم DOM-based XSS بدون ما الضحية ياخد باله.
خلّيني أشرح كل جزء بطريقة بسيطة وواضحة علشان تفهم السيناريو كامل 👇
وبيحصل ده عن طريق:
المهاجم بدل ما يعتمد على المستخدم إنه يفتح لينك فيه Payload…
يقوم يستخدم Clickjacking ليمكّن الضغط على رابط خبيث بدون ما المستخدم يشوفه أصلاً.
الكود يأخذ أي شيء بعد الـ # من الرابط ويعرضه مباشرة داخل DOM.
إذا المهاجم استخدم:
هينفّذ:
📌
✔ لأن
✔ بدون أي فلترة أو Sanitization
🔒 يمنع تضمين الموقع داخل iframe.
وده يمنع تنفيذ أي Script خارج الموقع، وبالتالي حتى لو حصل DOM-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; إذا المهاجم استخدم:
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'; ⚠️ الخلاصة
دمج Clickjacking مع DOM-based XSS بيخلي الهجوم:🔥 خبيث 🔥 صامت 🔥 صعب الاكتشاف
لذلك لازم المواقع:
✔ تمنع التضمين داخل iframe
✔ تفحص المدخلات
✔ تستخدم CSP
لأن الأمن مش مجرد Fix… الأمن عملية مستمرة. التعديل الأخير: