مهاجمان با استفاده از ترفندهایی که باعث فریب وب سرور می شود، می توانند به اطلاعاتی که محدود شدهاند، دسترسی پیدا کرده و به عنوان ابزار قدرتمندی برای نفوذ به یک سیستم و ایجاد خسارات قابل توجه استفاده کنند. حملات Directory Traversal یک روش رایج برای رسیدن به این هدف است. جستجو در مناطقی خارج از فضاهای رزرو شده برای یک وبسایت خاص، میتواند منجر به سرقت اطلاعات و اجرای کدهای دلخواه شود. به طور معمول، وب سرورها با محدود کردن دسترسی به سیستم فایل، فایلهای یک وبسایت را در داخل پوشه ریشه (root)، قرار میدهند. با این حال، خرابکاران سایبری میتوانند این کنترلهای امنیتی را دور زده و از مجوزهای ناامن فایل بهرهبرداری نمایند. به این ترتیب، آنها میتوانند به صورت غیرمجاز به اطلاعات حیاتی که در جای دیگری روی سرور قربانی ذخیره شده اند، دسترسی پیدا کنند.
آسیبپذیری های File inclusion، که به طور منظم در افزونهها و قالبها شناسایی می گردند، باعث میشوند تا وبسایتهای وردپرسی، اولین هدف حملات مرتبط با Directory Traversal باشند. اگرچه پیادهسازی شیوههای کدنویسی امن وظیفه توسعهدهندگان افزونهها و قالبها است اما پیادهسازی شیوههای امنیتی مناسب نیز وظیفه مدیران وب سایت ها می باشد.
در این مقاله، روشهای متداولی که هکرها برای نفوذ به دایرکتوری ریشه وب سایت و دسترسی به دادههای محدود شده استفاده می کنند، بررسی خواهد شد. همچنین توضیح داده می شود که چگونه پیمایش دایرکتوری، مهاجمان را قادر میسازد تا با موفقیت از آسیبپذیریهای local file inclusion) LFI) برای وارد کردن آسیب استفاده نمایند. در ادامه نیز نحوه اجرای اقدامات امنیتی لازم جهت محافظت از وبسایت وردپرسی در برابر این نوع حملات، معرفی می شوند. ابتدا، مفاهیم عملیات امنیت سرور معرفی می شوند. همچنین به طور دقیق تر، نحوه تفکیک انواع مختلف داده ها در محیط سرور و اینکه داده های وب سایت چه جایگاهی در این اکوسیستم دارند، توضیح داده خواهند شد.
تصویر(1)
چگونه پارتیشن بندی داده ها به عملیات امنیت سرور کمک می کند
وب سایت ها و اپلیکیشنهای تحت وب برای ذخیره داده های خود به سرورها متکی هستند. سپس این داده ها توسط وب سرورها، پایگاه داده و سایر اپلیکیشنهای خاص، قبل از تحویل به مرورگر بازدیدکنندگان به عنوان صفحات وب درخواستی، پردازش می شوند. اجزای سخت افزاری و نرم افزاری به صورت دقیق با یکدیگر کار می کنند تا یک زیرساخت قوی ایجاد و عملکرد سرور را تقویت کنند.
با این حال، این معماری کلاینت-سرور به یک رویکرد آگاهانه برای امنیت سرور نیز نیاز دارد. سرویس های حیاتی و سایر اجزای سیستم عامل سرور باید به طور کامل از فایل های کاربر و داده های وب سایت جدا شوند. این جداسازی داده ها در سیستم فایل معمولاً به عنوان پارتیشن بندی داده شناخته می شود.
پارتیشن بندی با جداسازی انواع مختلف داده ها در پارتیشن های جداگانه، آسیب پذیری های مربوط به سرور را ایمن میکند. اجرای پارتیشن بندی سیستم فایل و سایر مکانیسم های امنیتی، به محافظت از سرورها در برابر دسترسی غیرمجاز به اطلاعات حساس در سطح سیستم، کمک می نماید. علاوه بر این، پارتیشن بندی داده ها مدیریت کارآمد منابع را ممکن می سازد و عملکرد سرور را با جداسازی داده هایی که پیوسته ویرایش می شوند از فایل های عمدتا خواندنی و جداسازی داده های سیستم و کاربر، افزایش می دهد.
تصویر(2)
کنترل دسترسی به وب سرور: محدود کردن داده های وب سایت با Document Roots
به منظور جداسازی دادههای وبسایت از دادههای سیستم، وب سرورها از مفهوم Document Roots استفاده میکنند. این عمل شامل محدود کردن فایلهای وبسایت به یک پوشه مشخص در سیستم فایل است که به آن پوشه ریشه وبسایت یا document root میگویند. با تعریف document root، وب سرور قادر خواهد بود درخواستهای ورودی برای محتوای آن وبسایت را به درستی هدایت کرده و پاسخ دهد. این document root نقطه شروع پردازش درخواستهای وب برای آن وبسایت می باشد.
این محدودیت به پیشگیری از دسترسی غیرمجاز به دادههای حیاتی سرور، مانند اطلاعات سیستم عامل و فایلهای پیکربندی کلیدی که خارج از پوشه ریشه ذخیره شدهاند، کمک میکند. این بدان معنا است که صرفا اسکریپت یا محتوا و قابلیتهای مربوط به یک وبسایت خاص قادر خواهد بود به دادههای درون پوشه ریشه و زیرپوشههای آن دسترسی داشته و آنها را تغییر دهد. در صورت وقوع یک نفوذ امنیتی، مابقی بخشهای سرور محافظت خواهند شد.
علاوه بر document root، وب سرورها از مکانیسم های دیگری جهت کنترل دسترسی ها برای محدود کردن نفوذ به داده های وب سایت استفاده می کنند. یکی از مکانیسم های مهم، سطح دسترسی فایلها است. سطوح دسترسی فایل ها به شما کمک میکنند تا اصل "حداقل دسترسی" را رعایت کنید. به این معنی که کاربران و فرآیندهای سیستم صرفا به حداقل سطح دسترسی برای انجام وظایف مورد نظر خود، نیاز دارند. با استفاده از سطح دسترسی فایل ها، میتوانید دسترسی کاربران را به فایلها و پوشهها محدود کرده و فقط دسترسی لازم برای انجام کارهای مشخص را به آنها بدهید. به این ترتیب، خطرات احتمالی مربوط به دسترسی غیرمجاز به اطلاعات و سیستم را کاهش داده و امنیت را بهبود میبخشید. با وجود امنیت بالای این رویکرد، هکرها می توانند برخی از تکنیک های مخرب را برای دور زدن این راه حل امنیتی به کار گیرند. یکی از این روش ها حملات Directory Traversal است.
حملات Directory Traversal از ضعفهایی استفاده میکنند که در کد وبسایت و نحوه پیادهسازی مجوزهای امن موجود هستند. در واقع، حملهکننده با استفاده از ضعفهای موجود، تلاش میکند به طور غیرمجاز به فایلها و پوشههایی دسترسی پیدا کند که برای عموم در دسترس نیستند. این حملات معمولاً به دلیل ناامن بودن کدهای وبسایت، عدم تنظیم صحیح دسترسیها، قوانین دسترسی یا عدم اعمال صحیح فیلترهای امنیتی، امکانپذیر میشوند. با استفاده از این ترفندها، حملهکننده میتواند به اطلاعاتی دسترسی پیدا کند که معمولاً باید محدود و محافظت شده باشند و در برخی موارد حتی به اجرای کدهای خطرناک بپردازد که میتواند به خسارات قابل توجهی منجر شود.
تصویر(3)
حملات Directory Traversal چیست؟
حملات Directory Traversal که به عنوان path traversal نیز شناخته میشود، یک تکنیک مخرب است که با هدف اعطای دسترسی به فایلها و دایرکتوریهای محدود خارج از ریشه فایل های وبسایت یا اپلیکیشن تحت وب مورد نظر، انجام میشود. path traversal به مهاجم اجازه میدهد تا از طریق سیستم فایل سرور، به دایرکتوری ریشه و سایر پوشههای محدود شده، از طریق مرورگر نفوذ کند. نوعی دسترسی که در حالت عادی نباید امکانپذیر باشد.
Directory Traversal با دستکاری متغیرهایی که به فایل ها ارجاع داده شده اند و با استفاده از کاراکترهای خاص که به عنوان path traversal sequences شناخته می شوند، مورد سواستفاده قرار می گیرند. sequence یا رشتههایی مانند "/.." توسط وب سرور تفسیر می شوند و آن را مجبور می کنند تا در یک مسیر، به سمت بالا حرکت نماید و از ریشه فایلهای وب سایت دور شود. اگر یک وبسایت در home/user/public_html/ ذخیره شده باشد، اجرای یک directory traversal sequence مانند زیر، به مهاجم اجازه میدهد به مسیر etc/ که پیکربندی حیاتی سیستم را در لینوکس ذخیره میکند، حرکت نماید.
../../../etc
اگر directory listing در پیکربندی وب سرور غیرفعال باشد، هکر قادر به مشاهده محتویات دایرکتوری درخواستی نخواهد بود. این موضوع می تواند تا حدی امنیت سیستم را افزایش دهد و آسیب احتمالی ناشی از حملات پیمایش دایرکتوری را محدود کند زیرا مهاجم باید فایل دقیقی را که می خواهد در مرورگر نمایش دهد مشخص نماید. از آنجایی که در بیشتر مواقع، هکرها دقیقاً می دانند که به دنبال چه اطلاعاتی هستند، غیرفعال کردن directory listing مانع از دسترسی آنها به مسیر موردنظر نمی شود.
فایل etc/passwd/ یکی از اهداف رایج حملات Directory Traversal است. در سرورهای لینوکس، فایل etc/passwd/ حاوی لیستی از کاربران ایجاد شده در سرور می باشد. این فایل می تواند به هکرها نقطه شروع خوبی برای حملات brute force و دسترسی به اطلاعات محرمانه کاربران بدهد. از آنجا که etc/passwd/ دارای پرمیشن 644 است، برای همه کاربران سیستم، از جمله کاربری که وب سرور را اجرا می کند، قابل خواندن خواهد بود. به این ترتیب، وب سرور می تواند محتویات فایل را از طریق مرورگر لود نماید.
تصویر(4)
حملات Directory Traversal چگونه کار می کند؟
به عنوان یک تکنیک مخرب، Directory Traversal به ندرت جهت دسترسی به اطلاعات حساس در سرورهای قربانیان استفاده می شود. ابتدا، مهاجمان باید روشی برای سوء استفاده از یک آسیب پذیری در وب سایت مورد نظر پیدا کنند تا راهی برای نمایش اطلاعات درخواستی در مرورگر به دست آوردند. تنها در این صورت است که از حملات Directory Traversal برای پیمایش در سیستم فایل سرور قربانی و رسیدن به دایرکتوریهای محدود استفاده می شود.
File inclusion تکنیکی است که استفاده از Directory Traversal را امکان پذیر می کند. این آسیبپذیری زمانی رخ میدهد که یک وبسایت ورودی کاربر را بهدرستی بررسی نمیکند. مانند مسیرهای فایلی که با استفاده از dynamic file inclusion ارائه میشوند. این مسئله میتواند به حملات امنیتی و دسترسی غیرمجاز به فایلها منجر شود. ترکیبی از LFI و آسیبپذیریهای File inclusion موجود، به هکرها اجازه میدهد تا به دادههای خارج از document root وبسایت موردنظر دسترسی داشته و به اطلاعات حساس سرور دسترسی پیدا کنند.
نمونه ای از حملات Directory Traversal
برای درک بهتر از اینکه چگونه می توان از آسیب پذیری های LFI و File inclusion سوء استفاده کرد، مثالی در ادامه ذکر می شود. یک توسعهدهنده وب، صفحه ای با نام content.php طراحی می کند که به وبسایت اجازه میدهد صفحات یا اجزای مختلف را به صورت پویا و براساس درخواست کاربر، لود کند. به عنوان مثال، اگر یک بازدیدکننده وب سایت بخواهد صفحه «تماس با ما» را مشاهده نماید، ممکن است درخواست او در نوار آدرس مرورگر به صورت زیر نمایش داده شود.
https://example.com/content.php?page=contact_us
صفحه content.php از تکنیک local file inclusion برای ارجاع به فایلی که مربوط به پارامتر "contact_us" است استفاده می کند و می تواند حاوی کد PHP و HTML برای صفحه درخواست شده باشد. در این مثال، صفحه وب Content.php به عنوان یک کنترل کننده عمل نموده و فایل مناسب که محتوا را به صورت پویا براساس ورودی کاربر تولید می کند، لود می نماید. با این حال، اگر ورودی کاربر به درستی بررسی یا پاکسازی نشده باشد، آسیبپذیریهای file inclusion و Directory Traversal میتوانند توسط مهاجمان برای گنجاندن فایلهای دلخواه، مورد استفاده قرار گیرند و در نهایت در مرورگر نمایش داده میشوند.
به عنوان مثال، یک هکر میتواند مسیر زیر را که به directory traversal sequences و آدرس لاگ روت وب سرور آپاچی در سیستم فایل اشاره میکند، به عنوان مقدار پارامتر صفحه ارسال نماید. به این ترتیب، مهاجم می تواند محتویات فایل log را که حاوی اطلاعات حساسی مانند آدرس های آی پی، user agent strings و URL های درخواستی بازدیدکنندگان وب سایت است، مشاهده نماید.
../../../../../var/log/apache2/access.log
نکته: user agent strings اطلاعاتی هستند که توسط مرورگر وب یا نرمافزار مشتری به وب سرور ارسال میشوند. این رشتهها حاوی اطلاعاتی مانند نوع و نسخه مرورگر، سیستم عامل، دستگاه و اپلیکیشن مشتری میباشند. این اطلاعات میتوانند توسط وب سرور برای شناسایی و تحلیل نوع کاربران و ارائه خدمات متناسب با آنها، مورد استفاده قرار گیرند.
تصویر(5)
چگونه سطح دسترسی فایل ها می توانند Directory Traversal را کاهش دهند
سطوح دسترسی فایلها نقش مهمی در تضمین امنیت وب سرور و وب سایت دارند. با محدود کردن دسترسی فایلها به کاربران و گروه های خاص سیستم، می توانید به کاهش حملات Directory Traversal کمک نمایید. در حمله file inclusion با استفاده از Directory Traversal، محتویات فایل درخواست شده توسط مهاجم تنها در صورتی نمایش داده میشود که سطح دسترسی آن به سیستم اجازه دهد تا با استفاده از وب سرور، اطلاعات را بخواند. در حالی که برخی از فایل های محدود شده مانند etc/password/ دارای سطح دسترسی 644 هستند که آنها را برای همه کاربران سیستم قابل خواندن می کند، سایر فایل ها فقط برای کاربر روت در دسترس هستند. فایل etc/shadow/ که حاوی رمزهای عبور محافظت شده برای همه کاربران روی سرور لینوکس می باشد، دارای سطح دسترسی 640 است که باعث میشود هیچ کاربری غیر از root به آن دسترسی نداشته باشد. این امر دسترسی هکرها به فایل را از طریق مرورگر و Directory Traversal غیرممکن می کند.
چگونه آسیب پذیری های Directory Traversal را در سایت وردپرسی خود شناسایی نمایید؟
هسته وردپرس سطح بالایی از امنیت را ارائه می کند و به طور کامل در برابر آسیب پذیری های file inclusion و Directory Traversal محافظت می شود. با این حال، با توجه به گزینه های سفارشی سازی زیادی که این پلتفرم ارائه میدهد، احتمال بروز آسیب پذیری ها در یک سایت وردپرسی را افزایش می دهد. حتی معتبرترین افزونهها و قالبهای وردپرسی میتوانند حاوی نقصهای امنیتی باشند که به طور مرتب نیز کشف میشوند. گزارشهای مربوط به امنیت وردپرس که توسط iThemes به صورت هفتگی منتشر می شود به شما کمک میکند تا آسیبپذیریهایی که به تازگی در افزونهها و قالبهای وردپرس شناسایی شده اند، از جمله حملات Directory Traversal را به سرعت شناسایی و اصلاح نمایید. اگر پچ امنیتی جدیدی برای افزونه و قالب موردنظر ارائه شده است، سریعا برای بروزرسانی آنها اقدام کنید.
تصویر(6)
چگونه از سایت خود در برابر حملات Directory Traversal دفاع کنید؟
بهرهبرداری از آسیبپذیریهای موجود در افزونهها و قالبها یکی از بزرگترین روش های حمله است که هکرها از آن برای دسترسی غیرمجاز، سرقت دادههای حساس و آپلود بدافزارها از جمله backdoor، در وبسایتهای وردپرسی استفاده میکنند. در حالی که پیروی از شیوه های کدنویسی ایمن در حیطه مسئولیت توسعه دهندگان افزونه و قالب قرار می گیرد، صاحبان وب سایت وردپرسی مسئول اجرای اقدامات حفاظتی به صورت محلی هستند. تنها یک رویکرد چندگانه در امنیت وردپرس می تواند به کاهش خطر قربانی شدن در حملات سایبری پیشرفته کمک کند.
همه نرم افزارها را بروز نگه دارید
بروزرسانی هسته وردپرس، افزونه های فعال و قالب انتخابی به آخرین نسخه موجود، اولین قدم برای از بین بردن حملات Directory Traversal و سایر آسیب پذیری های شدید در سطح اپلیکیشن است. از آنجایی که همواره نقصهای امنیتی جدیدی در افزونه ها و قالب های وردپرسی شناسایی میشوند، نصب پچهای امنیتی، بعد از در دسترس قرار گرفتن آنها، بسیار مهم میباشد. قبل از رفع آسیبپذیری کشفشده توسط افزونه یا توسعهدهنده قالب، نرمافزار آسیبدیده را میتوان برای کاهش سطح حمله غیرفعال کرد. پیگیری بروزرسانیهای افزونه و قالب میتواند یک کار چالش برانگیز باشد اما وردپرس این امکان را در اختیار شما قرار می دهد تا بروزرسانی خودکار را برای افزونه های خود فعال نمایید.
پیکربندی امنی را برای سطح دسترسی فایل ها انجام دهید
سطوح دسترسی امن برای فایل های وردپرس یک لایه دفاعی اضافی در برابر حملاتی که با هدف دسترسی به اطلاعات حساس وب سایت و سرور انجام می شود، ارائه می دهد. اگرچه به ندرت نیاز به تغییر سطوح دسترسی مربوط به فایلهای حیاتی پیکربندی سیستم و سایر دادههای محدود سرور دارید اما مسئولیت تنظیم سطوح دسترسی امن برای فایلهای وبسایت اغلب بر عهده مالک وبسایت است. حفاظت از اطلاعات حیاتی وردپرس مانند فایل wp-config.php می تواند به طور موثری از خطرات حملات file inclusion با سوء استفاده از آسیب پذیری های directory traversal جلوگیری کند.
تصویر(7)
استفاده از Web Application Firewall
فایروال ها با فیلتر کردن درخواست های مخرب که با الگوهای شناخته شده مطابقت دارند یا الگوهای غیرعادی قبل از اینکه به وب سرور منتقل شوند، از سایت ها و سرورها محافظت می کنند. WAF به عنوان اولین خط دفاعی در برابر طیف گسترده ای از حملات سایبری مبتنی بر ربات، مانند Dos، DDoS و حملات تزریق داده مانند XSS و SQL injections عمل می کند. پیادهسازی WAF یا ترکیبی از راهحلهای پیشگیری از نفوذ مبتنی بر هاست و ابر، میتواند به طور قابلتوجهی احتمال دستیابی مهاجمان به داده های حساس سرور را کاهش دهد. WAF که به عنوان لایه دوم دفاع در برابر آسیب پذیری های file inclusion و حملات Directory Traversal عمل می کند، تضمین خواهد کرد که هکرها نمی توانند از ضعف امنیتی موجود در نسخه های اصلاح نشده افزونه ها و قالب ها سوء استفاده کنند.
نتیجه گیری
آسیبپذیریهای file inclusion و directory traversal یک تهدید مهم برای امنیت وبسایت هستند، زیرا اغلب توسط هکرهایی که به دنبال دسترسی غیرمجاز به دادههای حساس یا اجرای کدهای مخرب روی سرور قربانی می باشند، مورد سوء استفاده قرار میگیرند. با استفاده از حملات Directory Traversal، یک هکر میتواند وب سرور را وادار کند تا اطلاعات محدود شده را که در حالت عادی در دسترس نیستند، فاش نماید.
علیرغم اینکه directory traversal به طور گسترده مورد مطالعه و شناسایی قرار گرفته است اما یکی از نگرانی های اصلی برای وب سایت های وردپرسی که به نرم افزارهای قدیمی متکی هستند و اقدامات امنیتی مناسبی ندارند، محسوب میشود. انجام بروزرسانیهای مربوط به هسته، قالب و افزونههای وردپرس، پیکربندی امن برای سطح دسترسی فایل و پیادهسازی WAF میتواند به طور قابلتوجهی خطرات مربوط به حملات directory traversal را کاهش دهد. افزونه های امنیتی می توانند با ارائه یک رویکرد جامع و چند وجهی برای امنیت وب سایت به شما کمک کنند تا از وب سایت وردپرسی خود در برابر طیف گسترده ای از تهدیدات سایبری دفاع کنید.