API Penetration Testing
الهدف من هذا الدرس هو تعلم كيفية العثور على واجهات برمجة التطبيقات (APIs) التي يمكن استهدافها، باستخدام تقنيات الاستكشاف (reconnaissance) سواء كانت passive or active
ما هي الـ API؟
الـ API هي مثل جسر يربط بين برامج أو أنظمة مختلفة لتبادل البيانات أو الطلبات. مثلاً، عندما تستخدم تطبيق طقس على هاتفك لمعرفة حالة الطقس، التطبيق يتواصل مع خادم عبر API لجلب البيانات المطلوبة.
أنواع الـ APIs وكيف تجدها؟
Public APIs (واجهات برمجة التطبيقات العامة):
هذه الـ APIs مخصصة للجميع، وسهلة الوصول.
إذا كانت تتعامل مع معلومات غير حساسة (مثل معلومات عامة)، فقد لا تحتاج إلى أي طريقة للتحقق من هوية المستخدم (أي لا تحتاج إلى تسجيل دخول).
عادةً ما يكون لها توثيق (documentation) واضح ومتاح للجميع، مثل دليل الاستخدام.
Partner APIs (واجهات برمجة التطبيقات للشركاء):
هذه الـ APIs مخصصة فقط للشركاء التجاريين للشركة.
من الصعب العثور عليها إن لم تكن شريكًا.
التوثيق الخاص بها موجود ولكنه قد يكون محدودًا أو متاحًا فقط للشركاء.
Private APIs (واجهات برمجة التطبيقات الخاصة):
هذه الـ APIs مخصصة للاستخدام الداخلي فقط داخل الشركات.
غالبًا لا تكون موثقة بشكل كامل أو قد لا يكون لها توثيق على الإطلاق، مما يجعل العثور عليها أو استخدامها أصعب.
إذا لم يكن هناك توثيق، ماذا تفعل؟
عندما لا تجد توثيقًا (مثلًا في حالة APIs الخاصة)، قد تحتاج إلى الهندسة العكسية (reverse engineering) لفهم كيفية عمل هذه الـ APIs. لكن هذا موضوع معقد سيتم شرحه في درس لاحق. الآن، المهم أن نتعلم كيفية العثور على الـ APIs واستخدامها إذا كانت موثقة.
خلاصة:
الـ Public APIs سهلة العثور والاستخدام.
الـ Partner APIs أصعب قليلاً وتحتاج إلى أن تكون شريكًا للوصول إليها.
الـ Private APIs الأكثر تعقيدًا وأصعب في الوصول والاستخدام لأنها خاصة بالشركات.
كيف تجد الـ APIs؟
1. استخدام الموقع كنقطة انطلاق:
غالبًا ما تكون الـ APIs المستخدمة في المواقع التي تتعامل مع المستخدمين سهلة الاكتشاف لأن المطورين يريدون أن يستخدمها الناس.
يمكن ببساطة استخدام الموقع كمستخدم عادي ومحاولة العثور على رابط أو وثائق (documentation) تخص الـ API.
مثلًا، بعض المواقع تعرض الـ API في صفحة للمطورين أو في الروابط التي تحتوي على كلمات مثل "API" أو "docs".
2. الأسماء الشائعة لرابط الـ APIs:
بعض الروابط تحتوي على إشارات إلى أن هذا الرابط هو API. على سبيل المثال:
https://target-name.com/api/v1
https://api.target-name.com/v1
https://target-name.com/docs
إذا وجدت مثل هذه الروابط أثناء التصفح، فهذا قد يعني أنك عثرت على API.
3. الأدلة داخل الروابط:
أحيانًا يمكن أن تجد API داخل المسارات أو المجلدات الخاصة بالموقع:
/api
,/v1
,/rest
,/docs
,/graphql
هذه أسماء شائعة تدل على أن هناك API.
4. النطاقات الفرعية (Subdomains):
بعض المواقع قد تستخدم نطاقات فرعية تحتوي على الـ API مثل:
api.target-name.com
dev.target-name.com
test.target-name.com
5. مؤشرات في الـ HTTP Headers:
عندما يقوم المتصفح بإرسال طلب إلى السيرفر، يمكن أن ترى مؤشرات في الـ "Request" و"Response" التي تدل على وجود API، مثل:
Content-Type: application/json
أوContent-Type: application/xml
إذا حصلت على رد مثل:
{"message": "Missing Authorization token"}
، فهذا يعني أنك تتعامل مع API يتطلب صلاحيات دخول.
6. استخدام مصادر خارجية:
هناك منصات ومواقع تساعدك في البحث عن APIs مثل:
Github: بعض الـ APIs تكون مفتوحة المصدر.
Postman Explore: منصة لاستكشاف الـ APIs.
ProgrammableWeb: دليل للـ APIs.
RapidAPI: محرك بحث خاص بالـ APIs.
كيف تبدأ؟
استخدم الموقع بشكل عادي: حاول أن تستعرضه كما لو كنت مستخدمًا عاديًا، وابحث عن أي روابط أو إشارات إلى API.
البحث العميق: إذا لم تجد شيئًا مباشرًا، يمكنك أن تبحث في الأكواد أو الملفات التي تشير إلى وجود API.
الخلاصة: مهمتك هنا هي أن تجد واجهات الـ API التي يستخدمها الموقع، سواءً عن طريق الروابط، أو ملفات التوثيق، أو من خلال استكشاف الـ HTTP Headers، أو حتى عبر أدوات خارجية مثل Github.
Last updated