فئات ثغرات الويب
التحكم المكسور في الوصول
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"
منهجية الاختبار
- ارسم جميع نقاط النهاية بمستويات صلاحية مختلفة
- أنشئ حسابات اختبار لكل دور (مدير، مستخدم، ضيف)
- اختبر متقاطعاً الطلبات بين الحسابات
- تحقق من رموز الاستجابة والمحتوى (403 لكن البيانات تتسرب)
- اختبر تغييرات الحالة: هل يمكن للمستخدم ب تعديل بيانات المستخدم أ؟
الأتمتة
# استخدام Nuclei
nuclei -l endpoints.txt -tags idor,bac -o access-control-findings.txt
# إعداد إضافة Burp مخصصة
# Autorize: اختبار التحكم في الوصول الآلي
# AuthMatrix: اختبار مصفوفة الوصول القائم على الأدوار
أمثلة من العالم الحقيقي
| الشركة | الثغرة | المكافأة |
|---|---|---|
| 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. :::