تکنولوژی،خبری،هوش مصنوعی،: پست #32499 — TG.ME

🔐چرا
passwd

می‌تواند
/etc/shadow

را بدون دسترسی root تغییر دهد؟

در لینوکس، هش‌های رمز عبور کاربران در فایل
/etc/shadow

ذخیره می‌شوند. بیایید محتوای آن را بررسی کنیم:

cat /etc/shadow

اگر از یک کاربر معمولی این دستور را اجرا کنیم، نتیجه زیر را خواهیم گرفت:

cat: /etc/shadow: Permission denied

این کاملاً منطقی است، زیرا این فایل محافظت شده است و فقط برای فرآیندهای دارای امتیاز دسترسی دارد.

اما در عین حال، هر کاربری می‌تواند دستور زیر را اجرا کند:

passwd

و به راحتی رمز عبور خود را تغییر دهد. هش جدید به نحوی وارد همان فایل
/etc/shadow

می‌شود، در حالی که کاربر به آن دسترسی ندارد.

💬پس این دسترسی‌ها از کجا می‌آیند؟

بیایید به فایل
passwd

نگاهی بیندازیم:

ls -l /usr/bin/passwd

احتمالاً چیزی شبیه به این را خواهیم دید:

-rwsr-xr-x 1 root root ... /usr/bin/passwd

نکته جالب در اینجا، وجود حرف
s

به جای
x

در مجوزهای مالک است:

rws

این بیت SUID (Set User ID) ویژه است.

هنگامی که یک فایل اجرایی با SUID اجرا می‌شود، فرآیند، شناسه کاربری موثر (effective UID) مالک آن فایل را به دست می‌آورد. و مالک فایل
/usr/bin/passwd

، کاربر
root

است.

بنابراین:
کاربر → passwd → شناسه کاربری موثر 0 → /etc/shadow

اما کاربر در این فرآیند، به root تبدیل نمی‌شود. فرآیند خاص، دسترسی‌های بالاتری را به دست می‌آورد، و کد
passwd

تعیین می‌کند که با این دسترسی‌ها چه کاری می‌توان انجام داد - به عنوان مثال، به کاربر معمولی اجازه می‌دهد فقط رمز عبور خود را تغییر دهد.

🔎آیا تعداد این فایل‌ها در سیستم چقدر است؟

می‌توانید این را با یک دستور بررسی کنید:

find / -perm -4000 -type f 2>/dev/null

این دستور، فایل‌های اجرایی را با بیت SUID تنظیم شده پیدا می‌کند.

و در اینجا، جنبه جالبی از نظر امنیت مطرح می‌شود: اگر یک برنامه SUID متعلق به
root

باشد و در عین حال دارای آسیب‌پذیری باشد یا به درستی پیکربندی نشده باشد، این امتیازات بالاتر، به طور بالقوه می‌توانند راهی برای انجام اقداماتی از طرف
root

باشند.

بنابراین، حرف "s" که به ظاهر بی‌اهمیت در بین مجوزهای فایل قرار دارد، به هیچ وجه یک کاراکتر ساده نیست.

اگر از این نوع مطالب خوشتان می‌آید، آن را ذخیره کنید و لایک کنید —
👍

@ITSecurityComputer
❤54👍10❤‍🔥1😘1