اگر سایت شما با PHP اجرا می شود، ممکن است در معرض حملات نفوذ فایل های محلی باشید. اما آنها چگونه انجام می شوند و چه کاری می توانید در مورد آنها انجام دهید؟
سرورهای وب میزبان فایل هایی (صفحات وب، تصاویر، فیلم ها، فرم ها و غیره) هستند که برنامه وب شما را تشکیل می دهند و زمانی که شخصی از وب سایت شما بازدید می کند، این فایل ها را ارائه می دهند. برخی از سرورها پیشرفته تر هستند و همچنین میزان دسترسی بازدیدکنندگان وب را کنترل می کنند. آنها ممکن است بازدیدکنندگان معمولی را از دسترسی به حساب های دیگر کاربران یا داشبوردهای اداری محدود کنند. اگرچه وب سرورها در کاری که انجام می دهند کارآمد هستند – و این کار را نسبتاً ایمن انجام می دهند – مهاجمان می توانند از خطاهای ناشی از خطای انسانی یا منطق ناقص در نحوه سرویس دهی یک سرور به فایل هایی که میزبانی می کند سوء استفاده کنند.
حمله LFI چیست؟
حمله Local File Intrusion (LFI) زمانی اتفاق میافتد که مهاجمان از آسیبپذیریهای موجود در نحوه ذخیره، سرویسدهی، اعتبارسنجی یا کنترل دسترسی به فایلهای سرور وب استفاده کنند. این آسیب پذیری برای وب سایت های مبتنی بر PHP رایج است.
برخلاف بسیاری از انواع حملات سایبری که در آن مهاجمان برای خراب کردن یک برنامه به بدافزار متکی هستند، مهاجمان در LFIها بیشتر به ترفندهای هوشمندانه و خطوط کوتاه کد متکی هستند. این به ندرت به ابزارهای پیچیده یا اسکریپت های پیچیده نیاز دارد. حملات معمولا در مرورگر وب رخ می دهد. رایج ترین ترفندی که مهاجمان استفاده می کنند، تغییر رشته URL با کد، مسیرهای فایل یا نام فایل است.
حملات LFI چگونه اتفاق می افتد؟
حملات LFI معمولا در چهار مرحله اتفاق می افتد.
ابتدا، مهاجم یک وبسایت PHP را شناسایی میکند که یک برنامه وب آسیبپذیر را اجرا میکند، معمولاً با اجرای یک کد اصلی در URL مرورگر برای دیدن اینکه آیا برنامه وب (یعنی سایت) این دستور را اجرا میکند یا خیر. به این فکر کنید که کلیدهای ترکیبی روی کنترلر بازی خود را برای باز کردن قفل یک تخم مرغ عید پاک فشار دهید—مثلاً فشار دادن کلید پایین برای ورود به تونل در Super Mario. اما دستوراتی که مهاجمان در حملات LFI اجرا میکنند از بررسی هر تونل در سوپر ماریو سازگارتر است.
یک برنامه وب یا سروری که به درستی پیکربندی نشده است یا نمی تواند ورودی ها را تأیید کند، کد مخرب را اجرا می کند. از اینجا، هکر ممکن است دسترسی و امتیاز مورد نیاز خود را برای خواندن فایل های آسیب پذیر یا آپلود فایل های مخرب در سرور به دست آورد.
بیشتر حملات LFI منجر به دسترسی مهاجم به اطلاعات حساس می شود. امکان آپلود بدافزار به ندرت موفقیت آمیز است زیرا هیچ تضمینی وجود ندارد که برنامه وب فایل را در همان سروری که آسیب پذیری LFI وجود دارد ذخیره کند. اگر برنامه وب در یک محیط چند سروری باشد، اغلب این اتفاق می افتد.
بنابراین، اگر آسیبپذیری LFI روی سروری که تصاویر را میزبانی میکند، وجود داشته باشد، اما نه سروری که اعتبار کارمندان یا گذرواژههای کاربر را ذخیره میکند، مهاجم فقط به فایلهای تصویری روی آن سرور آسیبپذیر دسترسی خواهد داشت. صرف نظر از این، رویدادهای سایبری مانند حمله به LastPass نشان می دهد که هکرها می توانند با به ظاهر ناچیزترین سطح دسترسی، ویران کنند.
چگونه از حملات LFI جلوگیری کنیم
با توجه به پروژه امنیتی برنامه وب باز (OWASP)، حملات LFI بسیار رایج هستند. قابل درک است که هکرها از این حمله حمایت می کنند زیرا همانطور که W3Techs گزارش می دهد، تقریباً هشت وب سایت از هر 10 وب سایت PHP را به عنوان یک زبان برنامه نویسی سمت سرور اجرا می کنند – به اصطلاح قربانیان فراوانی. با اتخاذ بهترین شیوه های امنیت وب می توان از حمله LFI جلوگیری کرد.
لیست سفید فایل های سرور عمومی
برنامه های کاربردی وب اغلب از مسیرهای فایل به عنوان ورودی URL استفاده می کنند. هکرها می توانند با تغییر بخشی از URL که به عنوان مسیر فایل دو برابر می شود از این سیستم پرونده سوء استفاده کنند. به عنوان مثال، یک مهاجم می تواند https://dummywebsite.com/?module=contact.php را به https://dummywebsite.com/?module=/etc/passwd تغییر دهد. یک سرور آسیب پذیر با فیلتر ضعیف و منطق معیوب، محتویات فایل ذخیره شده در مسیر /etc/passwd را نمایش می دهد.
البته، هکرها از تغییرات نام فایل های رایج و ترکیبی از کاراکترهای پرس و جو استفاده می کنند تا شانس یک حمله موفقیت آمیز را افزایش دهند. هدف این است که برنامه وب را فریب دهید تا یک اسکریپت را اجرا کند یا فایل ها را در یک وب سرور نمایش دهد.
شما می توانید با ایجاد لیست سفید از اسناد عمومی در سرور خود و دستور دادن به برنامه وب برای نادیده گرفتن پرس و جوها برای هر سند یا مسیر فایل دیگر، این آسیب پذیری را مسدود کنید. بنابراین، اگر یک مهاجم سعی کند URL را برای درخواست یا اجرای کدهای درخواست کننده خصوصی دستکاری کند، در عوض یک صفحه خطا دریافت می کند.
به طور مکرر آسیب پذیری ها را آزمایش کنید
میتوانید از ابزارهای اسکن وب برای یافتن و رفع آسیبپذیریهایی که میتوانند شما را در معرض حملات LFI قرار دهند، استفاده کنید. اسکنرهای برنامه وب ابزارهای خودکاری هستند که برنامه شما را مانند یک مهاجم می خزند و به شما در مورد آسیب پذیری های احتمالی هشدار می دهند. چندین اسکنر وب منبع باز مانند OpenVAS و Wireshark وجود دارد، اما اکثر اسکنرهای آسیب پذیری نرم افزار اختصاصی هستند و برای استفاده به برنامه های پولی نیاز دارند.
اما، البته، شما فقط برای حملات LFI یک اسکنر وب دریافت نمی کنید. این ابزارها همچنین به دنبال آسیب پذیری های امنیتی گسترده تری مانند گنجاندن فایل از راه دور، اسکریپت نویسی بین سایتی، تزریق SQL و تنظیمات ضعیف سرور هستند. بنابراین، آنها ارزش آن را دارند.
محدود کردن امتیازات بازدیدکنندگان سایت
هکرها اغلب حملات LFI را با موفقیت اجرا میکنند، زیرا برنامههای کاربردی وب نمیتوانند امتیازات کاربر را تقسیم کنند و با انجام این کار به بازدیدکنندگان اجازه دسترسی به فایلهایی را میدهند که فقط باید برای مدیران قابل مشاهده باشد. این معیار مانند لیست سفید عمل میکند: برنامه وب و سرور خود را به گونهای پیکربندی کنید که فایلهای عمومی را ارائه کنند و هنگام تعامل بازدیدکننده با برنامه وب، درخواستهای غیرمجاز را نادیده بگیرند. این به ویژه برای کوئری ها به مسیرهای فایل حاوی فایل های حساس مهم است.
برای این منظور، ممکن است لازم باشد از تغییر مستقیم مسیرهای فایل جلوگیری کنید. برنامه وب فقط باید اسناد را از لیست مسیرهای کدگذاری شده ارائه دهد. علاوه بر این، برنامه وب را پیکربندی کنید تا به جای توابع base64 یا bin2hex، درخواستهایی را با الحاق مسیر پویا پردازش کند (نشانیهای اینترنتی باید دارای کاراکترهای الفبایی باشد).
اگر به فکر قرار دادن نام فایل در لیست سیاه هستید، این کار را نکنید. هکرها معمولاً فهرست رو به رشدی از نام فایلها دارند که میتوانند از آنها برای اجرای یک حمله LFI استفاده کنند. علاوه بر این، عملاً غیرممکن است (و اتلاف وقت بسیار زیاد) لیست سیاهی از منابع دائماً در حال افزایش حملات را در لیست سیاه قرار دهید.
از یک محیط چند سرور استفاده کنید
یک محیط چند سروری به شما امکان می دهد اسناد مهم و حساس را از فایل های عمومی جدا کنید و در نتیجه خطر شما را در صورت رخنه کاهش می دهد. سرورهای اختصاصی کمتر در برابر حملات LFI آسیب پذیر هستند، زیرا اگرچه با هم کار می کنند، پیکربندی آنها متفاوت است.
علاوه بر این امنیت، چندین سرور نیز قابل اعتماد (با خطرات کمتر خرابی)، سریع و کارآمد هستند. مسلماً اگر وب سایت شما کوچک باشد، استفاده از محیط چند سرور مقرون به صرفه نیست. در این صورت، دسترسی برنامه وب خود به داده ها را بین یک پایگاه داده برای داده های خصوصی و یک سرور برای فایل های عمومی تقسیم کنید.
آیا باید نگران حملات LFI باشید؟
احتمال حمله LFI وجود دارد، به خصوص اگر سایت شما با PHP اجرا شود، اما می توانید با پیکربندی برنامه های کاربردی وب و سرورها بر اساس بهترین شیوه های امنیت وب، میزان قرار گرفتن در معرض آن را کاهش دهید.
علاوه بر این، باید بررسی های امنیتی معمولی را برای یافتن آسیب پذیری ها در نظر بگیرید. همه چیز همیشه خراب می شود، به خصوص که معماری سایت پیچیده می شود. ابزارهایی که برای محافظت از خود نیاز دارید خودکار هستند و بسیاری از آنها نیازی به راه اندازی دقیق یا دانش فنی پیشرفته ندارند.