ثغرات IDOR: كيف تكتشفها وتجني المال منها في Bug Bounty
4 أكتوبر 2026 · بواسطة Pentevo
IDOR (Insecure Direct Object Reference) هي واحدة من أبسط الثغرات مفهومًا وأكثرها ربحًا في Bug Bounty. الفكرة في جوهرها: التطبيق يسمح لك بالوصول لمورد (بيانات، ملف، حساب) لمجرد معرفة معرّفه، دون التحقق من أنك تملك الصلاحية للوصول إليه.
كيف تعمل IDOR
السيناريو النموذجي:
تسجّل الدخول بحسابك: user_id=1337
تطلب بياناتك: GET /api/users/1337/profile
تغيّر الـ ID: GET /api/users/1338/profile
تحصل على بيانات مستخدم آخر — هذا هو IDOR
المشكلة الجوهرية: الخادم يتحقق من صحة الـ ID (أن 1338 موجود) لكن لا يتحقق من أن المستخدم الحالي مسموح له بالوصول إلى 1338.
أين تبحث عن IDOR
في الـ URL
/users/{id}
/orders/{order_id}
/invoices/{invoice_number}
/documents/{doc_id}
/messages/{message_id}
/profile?user=123
في الـ Request Body (JSON)
POST /api/update-profile
{
"user_id": 1337,
"email": "new@email.com"
}
جرّب تغيير user_id إلى ID مستخدم آخر.
في الـ Cookies وHeaders
Cookie: user_id=1337; account=premium
غيّر قيمة user_id وانظر النتيجة.
في GraphQL
query {
user(id: "1337") {
email
orders {
amount
}
}
}
منهجية اكتشاف IDOR خطوة بخطوة
الخطوة 1: أنشئ حسابين
دائمًا اعمل بحسابين للاختبار:
victim@test.com(أنشئ محتوى: طلبات، ملفات، رسائل)attacker@test.com(استخدمه لمحاولة الوصول)
الخطوة 2: تتبّع كل المعرّفات
افتح Burp Suite وتصفّح التطبيق. لاحظ كل رقم أو معرّف يظهر في:
- URLs
- Request bodies
- Response bodies
الخطوة 3: اختبر التبادل
# كـ Victim: أنشئ طلبًا، لاحظ order_id = 5555
# كـ Attacker: جرّب الوصول
GET /api/orders/5555
Authorization: Bearer <attacker_token>
الخطوة 4: جرّب أنواع المعرّفات
| نوع الـ ID | مثال | تقنية الاختبار |
|---|---|---|
| Sequential integers | 1, 2, 3, 4 | Increment/Decrement |
| UUID | a3f4c2d1-... | صعب التخمين، ابحث في الـ responses |
| Hash | md5(email) | جرّب hash بريدك الإلكتروني |
| Base64 | dXNlcl8xMzM3 | Decode ثم بدّل ثم Encode |
| GUID | predictable? | راقب النمط |
IDOR في APIs الحديثة
GraphQL IDOR
# اختبر introspection أولًا لاكتشاف الـ queries
query {
__schema {
queryType {
fields {
name
}
}
}
}
# ثم اختبر query بـ ID مستخدم آخر
query {
getUserProfile(userId: "victim_id_here") {
email, phone, address
}
}
REST API IDOR
# باستخدام curl
curl -H "Authorization: Bearer ATTACKER_TOKEN" \
https://api.example.com/v1/users/VICTIM_ID/orders
# إذا عاد بيانات الضحية = IDOR confirmed
Mass Assignment IDOR
// طلب عادي لتحديث بريدك
PATCH /api/profile
{
"email": "new@email.com"
}
// اختبار: أضف حقول إضافية
PATCH /api/profile
{
"email": "new@email.com",
"user_id": 9999,
"role": "admin",
"is_premium": true
}
أمثلة IDOR حقيقية مع مكافآت
مثال 1: IDOR في ملفات PDF
GET /download/invoice-001.pdf ← ملف الضحية
GET /download/invoice-002.pdf ← ملف مستخدم آخر ✓
مكافأة: $500 - $2,000
مثال 2: IDOR في API بيانات الدفع
GET /api/payment-methods/1337
# يعيد آخر 4 أرقام كارت ائتمان المستخدم 1337
مكافأة: $3,000 - $10,000
مثال 3: IDOR في رسائل خاصة
GET /messages?conversation_id=999
# يعيد محادثات خاصة بين مستخدمين آخرين
مكافأة: $1,000 - $5,000
كيف توثّق IDOR في التقرير
Title: IDOR in GET /api/orders/{id} exposes order details of any user
Impact: Any authenticated attacker can view full order history, shipping
address, and payment method (last 4 digits) of any user by iterating
over sequential order IDs.
Steps to Reproduce:
1. Create two accounts: victim@test.com and attacker@test.com
2. Log in as victim, place an order → note order ID: 7832
3. Log in as attacker
4. Send: GET /api/orders/7832 with attacker's auth token
5. Observe: complete order details of victim are returned
PoC: [Burp Suite screenshot showing attacker's token + victim's data in response]
Severity: High (confidential user data exposure, PII leak)
الخلاصة
IDOR هي بوابتك للدخول لعالم Bug Bounty المدفوع. ابحث بشكل منهجي، اعمل دائمًا بحسابين، وركّز على البيانات ذات القيمة العالية (مالية، صحية، شخصية). المعرّف البسيط في الـ URL قد يكون طريقك لأول مكافأة.
الأسئلة الشائعة
لماذا IDOR هي الثغرة الأمثل للمبتدئين؟
لأنها لا تحتاج أدوات معقدة — فقط متصفح وعقل منطقي. المنطق بسيط: تغيير ID أو معرّف في الـ URL أو الـ API والتحقق إذا كنت تصل لبيانات مستخدم آخر.
هل IDOR تعمل فقط في الـ URL؟
لا. IDOR تظهر في URL parameters، JSON body، HTTP headers، وحتى في ملفات تُحمَّل وتُستدعى بـ ID.
كم مكافأة IDOR عادةً؟
تتراوح بين $200 وعشرات الآلاف حسب تأثير البيانات. IDOR يكشف بيانات مالية أو طبية أو كاملة للمستخدم = High أو Critical.
مقالات ذات صلة
اختبار اختراق APIs: الدليل العملي لـ Bug Bounty في 2026
كيف تختبر REST APIs وGraphQL وgRPC في Bug Bounty: منهجية شاملة من Fuzzing الـ Endpoints إلى IDOR وBroken Authentication وInjection.
bug-bountyكيف تكتب Writeup Bug Bounty يجذب القراء ويعزز سمعتك
دليل كتابة Writeups احترافية لثغرات Bug Bounty: البنية الصحيحة، كيف تقدّم الثغرة بإبداع، ولماذا Writeups تُضاعف دخلك وفرص عملك.
bug-bountyشرح Bugcrowd للمبتدئين: كيف تبدأ وتختار البرنامج الصحيح
دليل شامل لمنصة Bugcrowd: التسجيل، الفرق عن HackerOne، أفضل البرامج للمبتدئين، نظام Trust وPoints، وكيف تستفيد من Crowdstream.
bug-bountyثغرات Command Injection: من الاكتشاف إلى RCE الكامل
دليل شامل لثغرات OS Command Injection: كيف تعمل، أين تظهر، Payloads عملية، تقنيات Out-of-Band Detection، وكيف توثّقها في Bug Bounty.
طبّق هذا عمليًا
أكاديمية Pentevo تحوّل هذه المفاهيم إلى دروس موجّهة وفيديوهات واختبارات — مجانًا.
ابدأ التعلّم مجانًا