امنیت

ضعف امنیتی zpanel 10.0.2

چند روز پیش داشتم سایتی رو چک می کردم برای مشکلات امنیتیش. زیر دامنه ها رو چک کردم که یکیش صفحه ورود کنترل پنل میزبانی رو می آورد.

بارها و بارها به دوستان و کلاینت ها گفتم که قدم اول هکرها جمع آوری اطلاعاته و سعی کنند که کمترین میزان اطلاعات در اختیار یک هکر قرار بگیره. در این مورد خیلی واضح نرم افزار و نسخه کنترل پنل نوشته شده بود: zpanel 10.0.2

ZPanel

یه جستجوی کوچیک من رو رسوند به نتیجه بررسی های قبلی روی این نسخه و یک ضعف امنیتی خطرناک که عمومی هم شده. بذارید با هم مرور بکنیم مشکل رو تا ببینیم که چه اشتباهات بچگانه و خطرناکی ممکنه توی برنامه نویسی رخ بده.

zpanel یک ماژول داره برای بک آپ گرفتن که این ماژول یه فایل داره برای دانلود فایل های روی سرور. احتمالا برای اینکه ادمین بتونه فایل های بک آپ رو دانلود کنه.

بذارید یه نگاه به متن فایل getdownload.php بندازیم:

کامنت ها رو از متن حذف کردم که زیاد شلوغ نباشه. در متن می بینید که با یه دستور شرطی چک می کنه که اگر با متغیر file آدرس فایل وارد شده و اون فایل وجود داره، دستور می ده به یه فانکشن که فایل رو در اختیار کاربر بذاره.

به قول اون ور آبیا WTF

الان کافیه شناختی از ساختار فایل ها و فولدرهای سرور داشته باشیم و یا یکی از سایت های روی سرور مشکلی داشته باشه که مسیر اصلی فایل ها رو نشون بده تا بتونیم هر فایلی رو که می خوایم دانلود کنیم.

بذارید بریم سر اصل قضیه: یوزر و پسورد سرور. در سرورهای لینوکسی، نام کاربری و پسورد ها رو می شه در فایل های passwd و shadow پیدا کرد. البته به صورت هش شده. (وارد جزییات تنظیمات سرور نمی شم چون یه بحث مجزاست)

همچنین از این آدرس می تونید یه اسکریپت به زبان پایتون بگیرید که به صورت اتوماتیک بک آپ های سرور رو براتون دانلود کنه. دیگه چی می خوایم واقعا؟

مشکل دیگه ای که این نسخه داره، دسترسی آزاد به فایل daemon.php است که باعث می شه هکرها به اطلاعات حساسی مثل نام های کاربری، دسترسی هاشون و سایت هایی که روی سرور قرار دارند دست پیدا کنه.

یه نمونه از خروجی اجرای این فایل رو می تونید اینجا ببینید:

در اطلاعات بالا به جای دامنه ها ستاره گذاشتم که مشکلی برای سایت پیش نیاد.

از اینجا به بعد دیگه برمی گرده به توانایی و خلاقیت هکر که می خواد چطور جلو بره و تا کجا پیش بره. مثلا در همین مورد خاص روی این سرور یک سایت وردپرسی وجود داشت که با دونستن مسیر قرار گیری فایل wp-config.php، اون رو دانلود کردم و نام کاربری و پسورد MySQL رو به دست آوردم که می تونم باهاش به دیتابیس سرور کانکت بشم (در صورتیکه ورود رو به localhost محدود نکرده باشن) و مشخصات کاربرهای اون سایت رو به دست بیارم.

می بینید که یه اشتباه در بررسی نکردن ورودی ها و یا عدم تنظیم درست Permission ها برای اجرای یک فایل می تونه چه تبعاتی داشته باشه.

خب همین الان برید نسخه کنترل پنل هاست رو چک کنید و اگه ضعف شناخته شده داشت یا به روز نبود از سرویس دهنده بخواید که کاریکه وظیفه اش است رو انجام بده.

 

پ ن: این پست فقط در جهت نشان دادن ضعف های Zpanel 10.0.2 است و ترغیب برای برطرف کردن مشکلات. لطفا از این مورد برای آسیب رساندن به دیگران استفاده نکنید.

Standard