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

استرجاع حساب بعد تعطيله بالكامل – مكافأة 3000$

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

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

💡 المقدمة

في هذا التقرير سأشارك تجربتي في اكتشاف ثغرة منطقية داخل منصة دولية تؤدي إلى استرجاع حساب تم تعطيله نهائيًا، بالرغم من قيود صارمة على المستخدمين من بعض الدول.

الثغرة تعتمد على فهم حالات الحساب داخل الـ API، واستغلال ضعف في التحكم بالحالة من خلال manipulation + sequence logic bypass.


🔍 ملاحظة أولية: المنصة تمنع التسجيل من بعض الدول

عند محاولة التسجيل من دولتي، واجهت رسالة تُفيد بأن الحساب تم تعليقه لحين التوثيق.
لكنني بدأت بتحليل الـ API ولاحظت وجود حالات محددة توضح حالة الحساب، وهي:

الحالةالرقمالوصف
مفعّل1الحساب مفعل بالكامل
معلق2الحساب ينتظر التوثيق
مغلق نهائيًا5الحساب تم تعطيله نهائيًا

🪪 الخطوات التي اتبعتها

1. إنشاء حساب من دولة محظورة

  • تم إنشاء الحساب بنجاح، لكن ظهرت رسالة أن الحساب معلق.
  • في واجهة API، حالة الحساب كانت 2.

2. تجربة Response Manipulation

  • قمت بتعديل الاستجابة من 2 إلى 1 يدويًا داخل المتصفح.
  • تمكنت من تجاوز إعادة التوجيه والدخول للوحة التحكم، لكن الصلاحيات كانت محدودة جدًا.

3. تجربة تعطيل الحساب يدويًا وإعادة تفعيله

  • استخدمت زر "تعطيل الحساب" داخل المنصة.
  • ثم جربت إرسال نفس طلب التفعيل الذي كان متاحًا مسبقًا.
  • النتيجة: الحساب عاد كما كان، لكن الحالة بقيت 2 (معلق).

4. تجربة الحالة الأخطر: الحساب المغلق نهائيًا (5)

  • تواصلت مع الدعم الفني، وطلبت منهم إغلاق حسابي نهائيًا بسبب استخدامي للمنصة من دولة محظورة.
  • بعد دقائق، استلمت بريدًا يؤكد أن الحساب تم حظره.
  • عند محاولة الدخول، ظهرت لي رسالة: "تم حظر حسابك نهائيًا."
  • حالة الحساب على الـ API كانت 5.

5. تحليل الجلسة (Session) والكوكيز

  • لاحظت أن كوكي الجلسة لا يتم إبطالها حتى بعد إغلاق الحساب بالكامل!
  • كنت قد حفظت Request تعطيل الحساب + Request إعادة التفعيل مسبقًا.

6. تنفيذ الهجوم بنجاح

  • أرسلت نفس طلب "تعطيل الحساب" (الذي يُستخدم داخل الموقع من قبل المستخدم).
  • بعدها مباشرة أرسلت طلب "إعادة التفعيل" باستخدام الجلسة القديمة.
  • خلال ثوانٍ، وصلني بريد من المنصة يؤكد إعادة التفعيل.
  • دخلت إلى الحساب ووجدت حالته تحولت إلى 1 (مفعل بالكامل).
  • لم أقم بأي تلاعب في الـ response هذه المرة، الحساب عاد طبيعيًا بصلاحيات كاملة!

✅ النتيجة

  • تمكنت من استرجاع حساب تم حظره نهائيًا.
  • الثغرة كانت بسبب ضعف التحقق من صلاحية الجلسة بعد الحظر، مع إمكانية إعادة استخدام ريكويستات قديمة بشكل تسلسلي.
  • الثغرة تم الإبلاغ عنها، وتم منحي مكافأة 3000 دولار.

🧠 الدرس المستفاد

  • لا تعتمد فقط على حالة الحساب في قاعدة البيانات، يجب إنهاء الجلسات بالكامل.
  • ترتيب الأحداث مهم جدًا، فالهجوم نجح بسبب إرسال طلبات "تعطيل" ثم "تفعيل" بترتيب معين.

Happy Hacking 🔥