قبل ما تدخل على لابات الـ IDOR والـ Access Control، لازم تفهم إزاي الإنترنت بيشتغل من ورا الكواليس. ده الكورس السريع اللي هيخليك جاهز لكسر الـ APIs.
لما بتدوس على زرار في أي موقع، الـ Browser (الـ Client) بيبعت رسالة نصية بسيطة جداً للـ Server اسمها HTTP Request. السيرفر بيرد برسالة اسمها HTTP Response.
كل Request بيبدأ بفعل بيحدد نيتك للسيرفر:
لما السيرفر يرد، بيبدأ الرد برقم بيعرفك نتيجة طلبك:
أي HTTP Request بيتكون من 3 أجزاء رئيسية ولازم تكون فاهمهم كويس عشان دي الحتة اللي هتعدل فيها طول شغلك:
التطبيقات الحديثة (اللي معموله بـ React أو Vue) مش بترندر HTML من السيرفر. هي عبارة عن Client بيكلم API بيجيب بيانات (JSON) من الداتابيز.
عشان הـ API يعرف يجيب أي بيانات بالظبط، بيستخدم نظام الـ RESTful routing. כל شيء في الداتابيز بيبقى ليه مسار (Path) ورقم تعريفي (ID).
عشان المبرمجين يحموا نفسهم من الـ IDOR، أحياناً بيبدلوا الأرقام بـ UUIDs (زي 8f14e45f-e23a-4f51-a9f8-b18d86f7ab52) عشان يكون صعب التخمين. في لابات الـ IDOR بتاعتنا هنتعلم إزاي نكسر الـ UUIDs دي لما المبرمج يسربها بالغلط.
دي عملية الـ Login. إنت بتدي السيرفر Username و Password، وهو بيتأكد من الداتابيز. لو صح، السيرفر بيعملك Session.
السيرفر ممكن يعطيك Session Cookie (معرف عشوائي محفوظ في السيرفر) أو يعطيك JWT (JSON Web Token) (توكن مشفر بيحتوي على بياناتك).
فشل هذه المرحلة يؤدي دائماً إلى 401 Unauthorized.
بعد ما السيرفر عرف إنت مين من التوكن (AuthN نجح)، لازم يسأل نفسه: هل اليوزر ده معاه صلاحية (Role) إنه يشوف لوحة التحكم دي؟
لو الـ Role بتاعك user والصفحة محتاجة admin، السيرفر بيوقفك.
فشل هذه المرحلة يؤدي دائماً إلى 403 Forbidden.
الـ Bug Bounty Hunters مش بيقضوا وقتهم في كسر الباسوردات (AuthN). إحنا دايماً بنعمل حساب مجاني عادي جداً عشان ننجح في الـ AuthN، وبعدين بنركز كل مجهودنا على كسر הـ AuthZ.
في الوضع الطبيعي، البراوزر بيبعت الريكويست للسيرفر في جزء من الثانية (أقل من 100ms) وإنت مش بتشوفه. الـ Proxy هو برنامج بيقف في النص كـ "شرطي مرور".
إنت دلوقتي معاك الأساسيات التقنية. افتح لابات الـ IDOR أو الـ Access Control وابدأ كسر القواعد!