الدرس 9 من 24

فئات ثغرات الويب

التحكم المكسور في الوصول

4 دقيقة للقراءة

التحكم المكسور في الوصول هو رقم 1 في OWASP Top 10:2025، مع 40 CWE مرتبطة. إنها فئة الثغرات الأكثر شيوعاً وكنز لصيادي الثغرات.

فهم التحكم في الوصول

التحكم في الوصول يفرض:

  • المصادقة: من أنت؟
  • التفويض: ماذا يمكنك أن تفعل؟
  • المساءلة: ماذا فعلت؟

عندما تفشل هذه، يصل المستخدمون لموارد لا ينبغي لهم.

IDOR (مرجع الكائن المباشر غير الآمن)

أكثر ثغرات التحكم في الوصول شيوعاً:

# الطلب العادي
GET /api/user/profile?id=1001

# المهاجم يغير المعرف
GET /api/user/profile?id=1002  # الوصول لبيانات مستخدم آخر

اختبار IDORs

# الخطوة 1: أنشئ حسابين (المستخدم أ والمستخدم ب)
# الخطوة 2: احصل على معرف مورد المستخدم أ
# الخطوة 3: كمستخدم ب، حاول الوصول لمورد المستخدم أ

# أنماط IDOR الشائعة
/api/users/{user_id}
/api/orders/{order_id}
/api/documents/{doc_id}
/download?file_id={id}
/invoice/view/{invoice_number}

نصائح صيد IDOR

النمط الاختبار
معرفات تسلسلية جرب id-1، id+1
UUIDs لا تزال تختبر—غالباً متوقعة
معرفات مشفرة فك base64، جرب تنويعات
مفاتيح مركبة غيّر user_id في user_id-resource_id

BOLA (تفويض مستوى الكائن المكسور)

IDOR لـ APIs—OWASP API Security رقم 1:

# عادي: احصل على بياناتك
GET /api/v1/users/me/orders

# هجوم: الوصول لطلبات مستخدم آخر
GET /api/v1/users/12345/orders

اختبار BOLA

# استخدام Burp Suite
1. التقط الطلب مع رمز المستخدم الخاص بك
2. غيّر معرف الكائن في URL/body
3. أرسل مع رمز المصادقة الخاص بك
4. تحقق إذا يمكنك الوصول لبيانات مستخدمين آخرين

# أتمتة مع إضافة Autorize
# - أعد جلستين (صلاحية منخفضة، صلاحية عالية)
# - الإضافة تعيد تشغيل الطلبات بين الجلسات

تصعيد الصلاحيات

التصعيد الأفقي

نفس مستوى الصلاحية، مستخدم مختلف:

المستخدم أ → بيانات المستخدم ب

التصعيد العمودي

من صلاحية أدنى لأعلى:

مستخدم عادي → وظائف الإدارة

المتجهات الشائعة

# معاملات إدارة مخفية
POST /api/update-profile
{"name": "Attacker", "role": "admin"}

# التصفح القسري
/admin/dashboard  # جرب حتى بدون رابط

# التلاعب بالمعاملات
/api/users?role=user → /api/users?role=admin

# التلاعب بـ Cookie/JWT
# غيّر مطالبة الدور في JWT: "role": "user" → "role": "admin"

منهجية الاختبار

  1. ارسم جميع نقاط النهاية بمستويات صلاحية مختلفة
  2. أنشئ حسابات اختبار لكل دور (مدير، مستخدم، ضيف)
  3. اختبر متقاطعاً الطلبات بين الحسابات
  4. تحقق من رموز الاستجابة والمحتوى (403 لكن البيانات تتسرب)
  5. اختبر تغييرات الحالة: هل يمكن للمستخدم ب تعديل بيانات المستخدم أ؟

الأتمتة

# استخدام Nuclei
nuclei -l endpoints.txt -tags idor,bac -o access-control-findings.txt

# إعداد إضافة Burp مخصصة
# Autorize: اختبار التحكم في الوصول الآلي
# AuthMatrix: اختبار مصفوفة الوصول القائم على الأدوار

أمثلة من العالم الحقيقي

الشركة الثغرة المكافأة
Facebook IDOR في صفحات الأعمال 15,000 دولار
Uber الوصول لرحلات ركاب آخرين 8,000 دولار
HackerOne قراءة التقارير الخاصة 10,000 دولار
Shopify تعديل منتجات متاجر أخرى 15,000 دولار

قالب التقرير

## التحكم المكسور في الوصول: IDOR في واجهة الطلبات

### الملخص
يمكن للمستخدمين الوصول لتفاصيل طلبات مستخدمين آخرين بالتلاعب بمعامل order_id.

### خطوات إعادة الإنتاج
1. سجل دخول كمستخدم أ، لاحظ معرف الطلب: 12345
2. سجل دخول كمستخدم ب، التقط أي طلب مصادق
3. أرسل: GET /api/orders/12345 مع جلسة المستخدم ب
4. لاحظ: تفاصيل طلب المستخدم أ مُعادة

### التأثير
- الوصول لـ PII (الاسم، العنوان، الهاتف)
- كشف المعلومات المالية
- انتهاك GDPR/الخصوصية

### الخطورة: عالية

نصيحة احترافية: اختبر دائماً التحكم في الوصول بحسابين على الأقل. الثغرة ليست في تغيير المعرفات—إنها في قبول الخادم للطلبات غير المصرح بها.

في الدرس التالي، سنستكشف هجمات الحقن: SQL injection، XSS، وcommand injection. :::

اختبار

الوحدة 3: فئات ثغرات الويب

خذ الاختبار