راح أشارك رحلة ممتعة واستكشافية داخل بيئة اختبار خاصة بشركة أمنية، انتهت باكتشاف ثغرة أمنية خطيرة جدًا في أداة يستخدمها الكثير من مطوري PHP تُدعى Clockwork. والهدف من هذا الشرح مو بس توثيق الاكتشاف، بل أيضًا تبسيط المفاهيم بحيث حتى المبتدئ في مجال الأمن المعلوماتي يقدر يفهم الخطوات وحدة وحدة.
ما هو Clockwork؟
هو أداة مخصصة لمطوري PHP، تُستخدم لمراقبة وتحليل أداء التطبيق، عرض استعلامات قاعدة البيانات، الطلبات، الاستجابات، الجلسات، وغيرها من التفاصيل أثناء التطوير. الأداة تشتغل عادة في بيئة "localhost" (بيئة المطور)، وما مفروض تكون متاحة للعامة في بيئة الإنتاج.
لكن...
إذا صار خطأ في الإعدادات، أو تم تجاهل جزئية معينة من التحقق، قد تتحول هالأداة من وسيلة مفيدة إلى خطر أمني كبير.
نظرة عامة على الثغرة
الخطأ كان في بيئة اختبارية (staging) تابعة لشركة Patchstack، واللي وفّرت إمكانية الدخول إلى Clockwork من خارج localhost. هذا سمح لي أنا (المهاجم) أشوف معلومات حساسة: مثل التوكنات، الإيميلات، الجلسات، وأحيانًا حتى السيطرة الكاملة على الحساب.
تفاصيل تقنية: كيف تشتغل Clockwork؟
isEnabled مفتاح تشغيل الأداة
هذا الميثود (الدالة) تقرر إذا Clockwork لازم تشتغل أو لا. شكلها في الكود كالتالي:

ببساطة:
- إذا الإعدادات تقول enable = true تشتغل.
- إذا ما محددة، تشتغل بس إذا التطبيق في وضع debug والطلب جاي من localhost أو من terminal.
hasLocalHost هل الطلب يأتي من بيئة تطوير؟
هنا كان الخلل الأكبر. الكود:

المشكلة؟ ببساطة تقدر تخدع السيرفر عن طريق تغيير قيمة الـ Host
في الهيدر، وتخليه يعتقد أنك من localhost.
كيف استغليت الثغرة؟
الخطوة 1 : إيجاد بيئة الـ Staging
حصلت بيئة staging تابعة لـ Patchstack عن طريق ملاحظة header اسمه Access-Control-Allow-Origin. من هناك استخدمت أداة بحث متقدمة (مثل Shodan أو ZoomEye) وحددت الـ IPs.

الخطوة 2 : استخدام ffuf للبحث عن Clockwork
ffuf -w ips.txt:IP -u http://IP/__clockwork/latest -H "Host: 127.0.0.1" -mc 200
أداة ffuf ساعدتني احصل Endpoint Clockwork شغال بدون حماية.
الخطوة 3 : تحليل API الخاص ببيئة الاختبار
لقيت إيندبوينتات مثيرة:
/researchers
يعرض إيميلات الباحثين بدون تسجيل دخول!/magic-link
يرسل رابط تسجيل دخول (توكن)./login
يسمح بتسجيل الدخول باستخدام التوكن.
الخطوة 4: سيناريو الاستغلال الكامل
- أخذت إيميل أي مدير من
/researchers
. - أرسلت له Magic Link وهمي عن طريق
/magic-link
. - Clockwork كان يسجل كل الطلبات، فأخذت التوكن من اللوج.

- استخدمته في
/login
وسويت تسجيل دخول كمدير!

- دخلت على Laravel Telescope وحصلت صلاحيات كاملة على النظام.

التأثير المحتمل
- سرقة حسابات المدراء.
- مشاهدة كل طلبات المستخدمين.
- الحصول على توكنات حساسة.
- في بعض الحالات، تنفيذ هجمات داخلية أكبر أو حتى السيطرة على السيرفر.
التوصيات والإصلاح
- لا تعتمد على فحص الـ
Host
وحده لتحديد إذا الطلب داخلي. - فعّل حماية Clockwork بـ IP filtering، Basic Auth، أو إيقافه تمامًا في بيئة staging.
- راقب كل أدوات الـ Debug بشكل دوري.
- لا تترك بيئة Staging مكشوفة للإنترنت بدون قيود.
تم التبليغ عنها بواسطة 0vulns