مقدمة:
شلون حصلت وصول كامل لملف PDF محمي بتوثيق هوية ورمز سري؟
خل أبينلك الخطوات بشكل مفصل.
بديت بفحص الموقع، وفهمت طريقة عمله:
- تكدر ترفع ملفات PDF.
- تكدر تضيف مساعدين يعدلون أو يعلقون على الملف.
قمت بإضافة حسابي الثاني كمساعد، بعدها وصلتني رسالة على الإيميل تحتوي على رابط فيه توكن:
https://REDACTED.com/File?token=eg

رجعت لحسابي الأول، وفعّلت خيار الحماية:
- فعلت التوثيق عبر KYC (توثيق هوية).
- أضفت رمز سري (Passcode).
بعد التفعيل، لما أفتح الرابط من حسابي الثاني، تطلعلي صفحة التوثيق وكلمة المرور مثل ما متوقع:

منظور المهاجم:

جربت أتلاعب بالـ response لكن ما ضبط.
الفكرة الرئيسية - Direct API Access
فكرت أشوف هل يوجد Endpoint مباشر لتحميل الملف؟
جربت:
GET /org/<ORG_ID>/ws/<WORKSPACE_ID>/documents/<DOCUMENT_ID>/files/<FILE_ID>/download HTTP/2
Host: api.stg01.Domain.com
Authorization: X-Token ***

وفعلاً دخلني على الملف مباشرة بدون الحاجة إلى إدخال الرمز السري أو التوثيق!
واجهتني مشكلة: منين أجيب الـ IDs (ORG, WS, DOC, FILE)؟
جربت أسوي Refresh للصفحة، وظهر لي Request يحتوي على كل المعلومات المطلوبة:
GET /p/<your_token>/data HTTP/2
Host: app.stg01.Domain.com
Authorization: X-Token ***

استخدمت نفس التوكن اللي وصلني بالإيميل، وفعلاً:
حصلت على:
ORG_ID
WORKSPACE_ID
DOCUMENT_ID
FILE_ID
رجعت ورسلت الـ request لتحميل الملف:
GET /org/<ORG_ID>/ws/<WORKSPACE_ID>/documents/<DOCUMENT_ID>/files/<FILE_ID>/download HTTP/2
Host: api.stg01.Domain.com
Authorization: X-Token ***
وانفتح الملف بشكل طبيعي، بدون أي باسورد أو توثيق.
لاحظت أن الملف يحتوي تعليقات، جربت أرسل تعليق باستخدام الـ Endpoint الخاص بالتعليقات:
POST /org/<ORG_ID>/ws/<WORKSPACE_ID>/documents/<DOCUMENT_ID>/public-messages HTTP/2
Host: api.stg01.Domain.com
Content-Length: 42
Authorization: X-Token ***
{"text":"ExeC_IQ","type":0,"mentioned_users":[]}

والتعليق تم بنجاح.
خطورة الثغرة
تعتبر هذه الثغرة عالية الخطورة لأنها:
- تتجاوز التوثيق وكلمة المرور.
- تسمح بالوصول إلى ملفات حساسة وخاصة.
- تتيح للمهاجم التعليق داخل المستند بدون أي أذونات أو صلاحيات.
ملخص الخطوات:
- استخدمت رابط يحتوي على توكن (Token) الي وصلني على الأيميل.
- اكتشفت أن التوكن يتيح الوصول إلى API غير محمية.
- حصلت على الـ IDs المهمة عبر API ثانية.
- رسلت Request مباشر لتحميل الملف.
- تخطيت الحماية المفروضة ببساطة عبر استدعاء Endpoint مباشر غير محمي.
- علقت على الملف أيضاً بدون صلاحيات.
ExeC_IQ