نوشته‌ها

آشنایی با حمله Directory Traversal

آشنایی با حمله Directory Traversal

کنترل مناسب دسترسی به محتوای وب برای یک وب سرور امن بسیارسخت است. دایرکتوری تراورسال (Directory Traversal) یا Path Traversal یک حمله HTTP است که به مهاجمان امکان دسترسی به دایرکتوری‌های محدود شده و اجرای دستورات خارج از دایرکتوری ریشه وب سرور را می‌دهد.

سرورهای وب دو سطح اصلی مکانیسم‌های امنیتی را فراهم می‌کنند

  • Access Control Lists (ACLs)
  • Root directory

یک لیست کنترل دسترسی در فرایند مجوز استفاده می‌شود. این یک لیست است که مدیر وب سرور برای نشان دادن اینکه چه کاربران یا گروه‌هایی قادر به دسترسی، اصلاح یا اجرای برخی از فایل‌ها در سرور و همچنین سایر حقوق دسترسی هستند استفاده می‌کند. دایرکتوری ریشه یک دایرکتوری خاص در سیستم فایل (File System) سرور است که در آن کاربران محدود هستند. کاربران قادر به دسترسی به چیزی در بالای این ریشه نیستند.

به عنوان مثال: دایرکتوری ریشه پیش فرض IIS در ویندوز است C:\Inetpub\wwwroot و با این راه‌ اندازی، کاربر دسترسی به C:\Windows ندارد، اما به C:\Inetpub\wwwroot\news و هر دایرکتوری دیگر که زیر مجموعه دایرکتوری ریشه است،(با توجه به اینکه کاربر از طریق ACL تأیید اعتبار شود) دسترسی دارد.

دایرکتوری ریشه مانع دسترسی کاربران به هر گونه فایل در سرور مانند C:\WINDOWS\system32\win.ini در سیستم عامل ویندوز و فایل/etc/passwd  در سیستم عامل لینوکس / یونیکس می شود. این آسیب پذیری می تواند در نرم افزار وب سرور یا در کد برنامه وب وجود داشته باشد.

برای انجام یک حمله Directory Traversal، تمام چیزی که یک مهاجم نیاز دارد یک مرورگر وب است و دانش در این مورد که کجا به صورت کورکورانه فایل‌ها و دایرکتوری‌های پیش فرض در سیستم را پیدا می کند.

اگر وب سایت شما آسیب پذیر باشد، یک مهاجم چه کاری می تواند انجام دهد؟

با یک سیستم آسیب‌پذیر دایرکتوری تراورسال (Directory Traversal)، مهاجم می‌تواند از این آسیب‌پذیری برای از بین بردن دایرکتوری ریشه و دسترسی به بخش‌های دیگر فایل سیستم استفاده کند. این ممکن است مهاجم را قادر به مشاهده فایل‌های محدود شده کند، که می تواند بستری باشد برای به دست آوردن اطلاعات بیشتر مورد نیاز جهت به خطر انداختن بیشتر سیستم.

بسته به اینکه دسترسی به وب‌سایت چگونه تنظیم شده است، مهاجم دستورات خود را با استفاده از جعل هویت خود به عنوان کاربری که با “وب سایت” مرتبط است، اجرا می‌کند. بنابراین همه چیز به اینکه به کاربر وبسایت چه دسترسی در سیستم داده شده، دارد.

مثال حمله دایرکتوری تراورسال (Directory Traversal) از طریق کد برنامه وب

در برنامه های وب با صفحات پویا (Dynamic Page)، ورودی‌ها معمولا درمرورگرها از طریق روش‌های درخواستی GET یا POST دریافت می‌شود. در اینجا یک مثال از URL درخواست HTTP GET را می‌توانید ببینید.

GET http://test.webarticles.com/show.asp?view=oldarchive.html HTTP/1.1

Host: test.webarticles.com

با استفاده از این URL، مرورگر صفحه پویا show.asp را از سرور درخواست میکند و به همراه این نیز پارامتر دیدن با مقدار oldarchive.htm را ارسال میکند. هنگامی که این درخواست در وب سرور اجرا می‌شود، show.asp فایل oldarchive.html را از فایل سیستم سرور بازیابی می‌کند، آن را ارائه می‌دهد و سپس به مرورگر ارسال می‌کند که به کاربر نمایش می‌دهد. مهاجم فرض می کند که show.asp می تواند فایل‌ها را از فایل سیستم بازیابی کند و URL سفارشی زیر را ارسال می‌کند.

GET http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini HTTP/1.1Host: test.webarticles.com

این باعث می شود صفحه دینامیکی فایل system.ini را از فایل سیستم بازیابی کند و آن را به کاربر نمایش دهد. عبارت ../ دستور می دهد که سیستم یک پوشه رابه عقب برگردد که به طور معمول به عنوان یک دستورالعمل سیستم عامل مورد استفاده قرار می‌گیرد. مهاجم میبایست حدس بزند که چندین دایرکتوری که او باید برای یافتن پوشه ویندوز در سیستم پیدا کند، اما این به راحتی با آزمون و خطا انجام می‌شود.

مثال یک حمله مسیریابی دایرکتوری (Directory Traversal) از طریق وب سرور

جدا از آسیب‌پذیری در کد، حتی خود وب سرور می تواند به حملات دایرکتوری تراورسال (Directory Traversal) باز باشد. این مشکل می‌تواند در نرم افزار وب سرور و یا در داخل برخی از فایل های اسکریپت نمونه موجود در سرور موجود باشد.

آسیب‌پذیری در آخرین نسخه‌های نرم افزار وب سرور ثابت شده است، اما سرورهای وب آنلاین وجود دارد که هنوز هم از نسخه های قدیمی IIS و Apache استفاده می‌کنند که ممکن است برای حملات مسیریابی پوشه‌ای باز باشد. حتی اگر شما از یک نسخه نرم افزار وب سرور استفاده کنید که این آسیب‌پذیری را رفع کرده باشد، ممکن است هنوز دایرکتوری‌های حساس اسکریپت‌های پیش فرض در معرض آن قرار داشته باشید که برای هکرها نیز شناخته شده است.

به عنوان مثال، یک درخواست URL که استفاده از دایرکتوری اسکریپت های IIS را برای گذر از دایرکتوری ها و اجرای دستور، می تواند به صورت زیر باشد:

GET http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c:\ HTTP/1.1Host: server.com

این درخواست یک لیست کامل از تمام فایل ها در C:\directory با استفاده از اجرای دستور shell file دستور cmd.exe را و اجرای  دستور dir c:\ را در shell نمایش می‌دهد. عبارت %۵c که در درخواست URL است، یک کد فرار (Escape Code) وب است که برای نمایش کاراکترهای عادی استفاده می شود. در این مورد%۵c  نشان دهنده شخصیت \ است.

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

چگونگی بررسی آسیب پذیری دایرکتوری تراورسال (Directory Traversal)

بهترین راه برای بررسی اینکه آیا وب سایت و برنامه‌های وب شما به دایرکتوری تراورسال (Directory Traversal) آسیب پذیر هستند، استفاده از اسکنر آسیب‌پذیری وب است. اسکنر آسیب پذیری وب تمام وب سایت شما را بررسی (Crawl) می کند و به طور خودکار آسیب پذیری های دایرکتوری تراورسال (Directory Traversal) را بررسی کرده و به همراه نحوه رفع آسان آن گزارش می دهد.

جلوگیری از حمله دایرکتوری تراورسال Directory Traversal

اول از همه اطمینان حاصل کنید که آخرین نسخه نرم افزار وب سرور خود را نصب کرده اید و اطمینان حاصل کنید که تمام وصله ها (Patch) اعمال شده اند.

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