في يوم من الأيام، كنت أعمل على تحليل نظام في بيئة اختراق، أبحث عن الثغرات وأساليب تصعيد الامتيازات. بدأت جولتي باستخدام أمر شائع بين المختبرين الأمنيين، وهو:
هذا الأمر يسمح لي بالبحث عن الملفات التي تمتلك امتيازات suid، والتي يمكن أن تكون المفتاح للوصول إلى امتيازات أعلى في النظام.
خلال فحصي، وجدت ملفًا غريبًا اسمه suid-env.
شعرت بالفضول حول ما يمكن أن يفعله هذا الملف، لذلك قررت تشغيله لمعرفة المزيد. وبالفعل، قمت بتنفيذ الأمر التالي:
ظهرت لي رسالة “Starting web server” بشكل غير متوقع، مما أثار المزيد من الأسئلة في ذهني. ماذا لو كان هذا الملف يستخدم أوامر نظامية يمكنني التحكم بها؟
لمعرفة المزيد حول ما يجري داخل هذا الملف، استخدمت أداة strings لاستعراض النصوص القابلة للقراءة داخله. وأثناء التصفح، ظهر لي النص التالي:
بدا لي أن هذا الملف يستدعي أمر service لتشغيل apache2. فبدأت خطة جديدة تتشكل في ذهني، مستندة إلى استغلال متغيرات البيئة.
لتنفيذ خطتي، قررت تعديل متغير البيئة PATH بحيث يشير إلى مجلد tmp أولاً، قبل المسارات الأخرى. هذا يعني أن أي أمر يتم تشغيله بدون مسار محدد سيبحث أولاً في مجلد tmp. نفذت الأمر التالي:
الآن، جاء وقت إعداد الملف الذي سيمنحني امتيازات أعلى. قمت بإنشاء ملف exploit.c يحتوي على كود بسيط لفتح bash بامتيازات root:
قمت بتجميع هذا الملف باستخدام gcc ليكون قابلاً للتنفيذ وأسمته service
الآن وقد أصبح service جاهزًا، قمت بتشغيل suid-env مرة أخرى، حيث سيتم استدعاء /tmp/service بدلاً من service بسبب تعديل PATH.
وبالفعل، حصلت على امتيازات root.
للتحقق من نجاح الاختراق، قمت بتنفيذ الأمر whoami
كانت النتيجة root، مما يعني أنني نجحت في تصعيد الامتيازات.