ثغرة XSS المتقدمة: الهروب عبر الوسوم المخصصة (Custom Tags) 🚀🛡️
مرحباً بصيادي الثغرات! ماذا تفعل إذا واجهت جدار حماية (WAF) "متعصب" قام بحظر كل وسم HTML تعرفه في حياتك؟ في لابتنا اليوم، سنستخدم تقنية ذكية جداً لتجاوز هذا الحظر عبر ابتكار وسومنا الخاصة!
لاب اليوم من PortSwigger هو:
Reflected XSS into HTML context with all tags blocked except custom ones
اليوم سنتعلم كيف نجعل المتصفح ينفذ كود JavaScript باستخدام وسم "وهمي" من اختراعنا. لننطلق! 🕵️♂️
🔍 مرحلة الفحص (Fuzzing Results)
بعد استخدام Burp Suite Intruder وتجربة قائمة الوسوم الكاملة، كانت النتيجة محبطة: كل الوسوم تعطي 403 Forbidden.
لكن، عند تجربة وسم عشوائي مثل <gemini-tag>، نجد أن الموقع يقبله! هذا يعني أن الفلتر يحظر "القائمة السوداء" للوسوم المعروفة فقط، ويترك أي شيء آخر يمر.
🧠 الفكرة: كيف ننفذ كود داخل وسم مخصص؟
بما أن الوسم المخصص <xss-tag> غير معروف للمتصفح، فنحن بحاجة لطريقة لإجبار المتصفح على تنفيذ كود عند التفاعل معه. أفضل طريقة هي استخدام الهاش (#) في الرابط مع حدث الـ onfocus.
عندما نستخدم tabindex، نجعل هذا الوسم المخصص قابلاً للتركيز (Focusable)، وعندما نستخدم الـ ID مع الهاش، يجبر المتصفح "التركيز" على الانتقال لهذا الوسم فور تحميل الصفحة.
🛠️ خطة الهجوم (The Payload)
سنقوم بإرسال رابط للضحية يحتوي على وسمنا المخصص، ونستخدم سكريبت بسيط ليقوم بتحويل الضحية إلى الرابط الذي يحتوي على الهاش ليفعل الـ Focus تلقائياً.
الـ Payload السحري:
<xss-tag onfocus="alert(document.cookie)" id="x" tabindex="1">
الرابط النهائي الذي سنرسله للضحية (عبر Exploit Server):
<script>
location = 'https://YOUR-LAB-ID.web-security-academy.net/?search=%3Cxss-tag+onfocus%3Dalert%281%29+id%3Dx+tabindex%3D1%3E#x';
</script>
📝 خطوات الحل العملية
- اذهب إلى Exploit Server.
- في قسم الـ Body، ضع كود السكريبت الذي يقوم بتحويل المستخدم إلى رابط اللاب مضافاً إليه الـ Payload والهاش
#xفي النهاية. - تأكد أن الـ ID في الـ Payload (وهو
x) يطابق الكلمة الموجودة بعد الهاش في الرابط. - اضغط Deliver exploit to victim.
ماذا حدث؟ المتصفح فتح الرابط، وجد الوسم المخصص، وبسبب الهاش #x، قام بعمل "Focus" تلقائي على الوسم الذي يحمل نفس الـ ID، فانطلق حدث onfocus ونُفذ الكود! 💥
💡 نصيحة صياد (Custom Tag Pro Tip)
دائماً تذكر هذه الحيلة عندما تجد فلتراً قوياً:
- الوسوم المخصصة: المتصفحات تسمح بأي اسم وسم (Custom Elements) ما دام يحتوي على حروف.
- التركيز التلقائي: استخدام
tabindexمع الـIDوالـURL Fragment (#)هو بديل قوي جداً لخاصيةautofocusالتي قد تكون محظورة. - التطوير: يمكنك استخدام هذه الطريقة لسرقة البيانات دون أن يلاحظ المستخدم أي تغيير في الصفحة.
🚀 الخاتمة
لاب اليوم يعلمنا أن الحماية القائمة على "القوائم السوداء" (Blacklists) فاشلة دائماً. المطور الذي يحظر الوسوم المعروفة فقط يترك الباب مفتوحاً للإبداع. استمر في التفكير خارج الصندوق!
.png)