برنامه نویسی

پیمایش مسیر: تهدید پنهان برای داده های شما

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


پیمایش مسیر چیست؟

پیمایش مسیر که به عنوان پیمایش دایرکتوری نیز شناخته می شود، نوعی آسیب پذیری است که در برنامه های کاربردی وب یافت می شود. این به مهاجمان اجازه می‌دهد به فایل‌ها و دایرکتوری‌های ذخیره‌شده خارج از پوشه ریشه وب دسترسی داشته باشند، که معمولاً نمی‌توانند به آن‌ها دسترسی داشته باشند، این برای سرآشپزها، معروف به Backend Engineers است. این فایل‌ها می‌توانند حاوی اطلاعات حساسی مانند کد برنامه، داده‌های کاربر، اعتبارنامه‌ها و حتی فایل‌های سیستم باشند که می‌توانند برای به دست آوردن کنترل بیشتر روی سرور مورد سوء استفاده قرار گیرند.


چگونه پیمایش مسیر کار می کند

بگویید یک برنامه وب وجود دارد، یک فروشگاه خرید آنلاین شیطانی یاهویهو که به طور غیرقانونی تجارت می کرد، بسیار شبیه Darkmarket، که در واقع نام آن یهو! می دانم احمق، به چیزی مربوط به پنهان شدن در ساده بود سایت توسط مدیری که الان در زندان است :). برنامه یک تصویر را با استفاده از یک URL مانند زیر بارگیری می کند:

 src="/loadImage?filename=218.png">
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در باطن، سرور این درخواست را با افزودن نام فایل به دایرکتوری پایه پردازش می کند:

/var/www/images/218.png
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با این حال، اگر هیچ دفاعی در برابر پیمایش مسیر وجود نداشته باشد، یک مهاجم; در این مورد EFCC، می تواند دستکاری کند پارامتر نام فایل برای دسترسی به فایل های دیگر روی سرور مانند اطلاعات حساب کاربران. به عنوان مثال، آنها ممکن است تلاش کنند:

https://yahooyahoo.com/loadImage?filename=../../../etc/passwd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این درخواست به سرور دستور می دهد تا با بالا بردن سه سطح دایرکتوری از مسیر پایه و سپس دسترسی به فایل، یک فایل را بارگذاری کند. /etc/passwd فایل، یک فایل سیستمی حیاتی در سیستم‌های شبه یونیکس.

سرور مسیر را به صورت زیر می سازد:

/var/www/images/../../../etc/passwd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این ../ توالی یک سطح دایرکتوری به سمت بالا حرکت می کند. بنابراین، مسیر به این نتیجه می رسد:

/etc/passwd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


قدرت و توان ../ توالی

وقتی می شنوید توالی در Web-Sec، فقط به آن فکر کنید جهت یابی.

در فکر ../ به عنوان راهی برای بالا رفتن از یک سطح در ساختار دایرکتوری، مانند بالا رفتن از نردبان به طبقه بالا:

  • یک مجرد ../ شما را یک سطح بالاتر می برد
  • ../../ شما را دو سطح بالاتر می برد.
  • ../../../ شما را سه سطح بالا می برد و غیره.

در فایل سیستم کامپیوتری:

  • شروع در /home/user/documents/projects، ../ شما را به /home/user/documents.
  • ../../ شما را به /home/user.
  • ../../../ شما را به /home.

برای درک بهتر این موضوع:

تصور کنید در یک هتل بزرگ، هتل 3FCC هستید. شما از اتاق 419 (طبقه 4، اتاق 19) شروع می کنید. استفاده كردن ../:

  • ../ به معنای بیرون آمدن به راهرو است (از نظر دایرکتوری یک سطح بالاتر).
  • ../../ یعنی با آسانسور به طبقه سوم بروید.
  • ../../../ یعنی پایین رفتن به طبقه 2

چیدمان هتل:

Hotel:
---------------------

                          (Floors)
                                |
                                |
    +---------------------------------------------+
    | 1st Floor  | 2nd Floor  | 3rd Floor | 4th Floor |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
    |             | Room 219   |             | Room 419   |
    |             |             |             | (Your Room)|
    |             +-------------+             +-------------+
    |             | Room 220   |             | Room 420   |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
    |             | Room 319   |             |             |
    |             |             |             |             |
    |             +-------------+             +-------------+
    |             | Room 320   |             |             |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مراحل پیمایش مسیر:

  1. موقعیت اولیه: اتاق 419 در طبقه 4

    • مسیر فعلی: /home/user/documents/projects
    • قیاس هتل: شما در اتاق 419 در طبقه 4 هستید
    +---------------------------------------------+
    | 1st Floor  | 2nd Floor  | 3rd Floor | 4th Floor |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
    |             | Room 219   |             | Room 419   |
    |             |             |             | (You)      |
    |             +-------------+             +-------------+
    |             | Room 220   |             | Room 420   |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
    |             | Room 319   |             |             |
    |             |             |             |             |
    |             +-------------+             +-------------+
    |             | Room 320   |             |             |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. مرحله 1: استفاده كردن ../ تا یک سطح به سمت راهروی طبقه 4 حرکت کنید

    • مسیر جدید: /home/user/documents
    • قیاس هتل: بیرون آمدن به راهروی طبقه چهارم
    +---------------------------------------------+
    | 1st Floor  | 2nd Floor  | 3rd Floor | 4th Floor |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
    |             | Room 219   |             | (Hallway)  |
    |             |             |             |             |
    |             +-------------+             +-------------+
    |             | Room 220   |             | Room 419   |
    |             |             |             | (Empty)   |
    +-------------+-------------+-------------+-------------+
    |             | Room 319   |             |             |
    |             |             |             |             |
    |             +-------------+             +-------------+
    |             | Room 320   |             |             |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. گام 2: استفاده كردن ../../ برای بالا رفتن از دو سطح به طبقه 3

    • مسیر جدید: /home/user
    • قیاس هتل: با آسانسور به طبقه سوم بروید
    +---------------------------------------------+
    | 1st Floor  | 2nd Floor  | 3rd Floor | 4th Floor |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
    |             | Room 219   | (You)       | (Hallway)  |
    |             |             |             |             |
    |             +-------------+             +-------------+
    |             | Room 220   | Room 319   | Room 419   |
    |             |             | (Empty)   | (Empty)   |
    +-------------+-------------+-------------+-------------+
    |             | Room 320   |             |             |
    |             |             |             |             |
    |             +-------------+             +-------------+
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. مرحله 3: استفاده كردن ../../../ برای بالا رفتن از سه سطح به طبقه دوم

    • مسیر جدید: /home
    • قیاس هتل: با آسانسور به طبقه دوم بروید
    +---------------------------------------------+
    | 1st Floor  | 2nd Floor  | 3rd Floor | 4th Floor |
    |             | (You)     | (Empty)   | (Hallway)  |
    +-------------+-------------+-------------+-------------+
    |             | Room 219   | Room 319   | Room 419   |
    |             |             | (Empty)   | (Empty)   |
    |             +-------------+             +-------------+
    |             | Room 220   | Room 320   | Room 420   |
    |             |             |             |             |
    +-------------+-------------+-------------+-------------+
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دفاع و دور زدن

برای جلوگیری از این حملات، بسیاری از برنامه ها توالی پیمایش دایرکتوری را از ورودی کاربر حذف می کنند. اما مهاجمان باهوش اغلب راه هایی برای دور زدن این دفاع ها پیدا می کنند. به عنوان مثال، آنها ممکن است از یک مسیر مطلق مستقیماً از ریشه استفاده کنند:

filename=/etc/passwd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یا ممکن است از دنباله‌های پیمایش تودرتو مانند استفاده کنند ....//، که پس از جداسازی، همچنان یک دنباله پیمایش معتبر باقی می گذارد:

https://yahooyahoo.com/loadImage?filename=....//etc/passwd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا نحوه کار توالی های تودرتو آمده است:

  • ورودی کاربر: ....//etc/passwd
  • نوارهای کاربردی ../: تسلسل و توالی ....// به ../
  • مسیر حاصل: /var/www/images/../etc/passwd
  • مسیر نهایی به این نتیجه می رسد: /etc/passwd

ترفندهای رمزگذاری URL

ترفند دیگر شامل رمزگذاری URL است (به زودی مقاله ای در مورد رمزگذاری URL می نویسم)، که در آن کاراکترهایی مانند ../ به شکل های رمزگذاری شده نمایش داده می شوند (%2e%2e%2f). مثلا:

filename=%2e%2e%2f%2e%2e%2fetc/passwd
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این می تواند برنامه را فریب دهد تا آن را به عنوان ورودی معتبر پردازش کند.

محافظت در برابر پیمودن مسیر

برای دفاع در برابر پیمایش مسیر:

  1. از استفاده از ورودی کاربر در APIهای سیستم فایل خودداری کنید هر زمانی که ممکن بود.
  2. ورودی های کاربر را به دقت تأیید کنید:

    • از لیست سفید مقادیر مجاز استفاده کنید.
    • فقط کاراکترهای خاص را مجاز کنید (مثلاً حروف عددی).
  3. مسیر را متعارف کنید:

    • مطمئن شوید که مسیر حل شده با دایرکتوری پایه مورد انتظار شروع می شود.

نمونه هایی از حملات پیمایش مسیر در زندگی واقعی

1. Apache Struts CVE-2017-5638

در سال 2017، یک آسیب پذیری حیاتی در Apache Struts، یک چارچوب برنامه کاربردی وب منبع باز محبوب، کشف شد. این آسیب‌پذیری (CVE-2017-5638) به مهاجمان اجازه می‌دهد تا از پیمایش مسیر برای خواندن و اجرای فایل‌های دلخواه روی سرور سوء استفاده کنند. این بخشی از بردار حمله مورد استفاده در نقض گسترده داده های Equifax بود که اطلاعات شخصی بیش از 147 میلیون نفر را فاش کرد. مهاجمان از این آسیب پذیری برای اجرای کد راه دور استفاده کردند و به داده های حساس دسترسی پیدا کردند.

2. پیمایش مسیر Fortinet FortiOS (CVE-2018-13379)

در سال 2018، یک آسیب‌پذیری پیمایش مسیر (CVE-2018-13379) در پورتال وب FortiOS SSL VPN Fortinet کشف شد. این نقص به مهاجمان احراز هویت نشده اجازه می‌دهد تا فایل‌های سیستم را از طریق درخواست‌های منابع HTTP که به‌طور ویژه ساخته شده‌اند دانلود کنند. با سوء استفاده از این، مهاجمان می توانند به اطلاعات حساس مانند فایل های رمز عبور و جزئیات جلسه VPN دسترسی داشته باشند که امنیت کل شبکه را به خطر می اندازد.

3. پلتفرم تجارت الکترونیک مجنتو

Magento، یک پلتفرم محبوب تجارت الکترونیک، در طول سال‌ها در معرض آسیب‌پذیری‌های چند مسیر پیمایش بوده است. یکی از این آسیب‌پذیری‌ها به مهاجمان اجازه می‌دهد تا با دور زدن محدودیت‌های دایرکتوری، از مکانیسم آپلود فایل برای آپلود فایل‌های مخرب سوء استفاده کنند. این می‌تواند منجر به اجرای کد از راه دور شود و مهاجمان را قادر می‌سازد تا سرور وب را کنترل کنند و به اطلاعات حساس مشتری و داده‌های پرداخت دسترسی داشته باشند.

4. برنامه فروشگاه نوکیا

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

5. پیمایش مسیر Rubygems.org (CVE-2020-25613)

در سال 2020، یک آسیب‌پذیری پیمایش مسیر در Rubygems.org، سرویس میزبانی جواهر جامعه روبی، شناسایی شد. این آسیب‌پذیری (CVE-2020-25613) به مهاجمان اجازه می‌دهد تا مسیرهای فایل را دستکاری کرده و فایل‌های دلخواه را از سرور دانلود کنند. این یک خطر قابل توجه است زیرا به طور بالقوه می تواند فایل های پیکربندی حساس و اعتبار ذخیره شده در سرور را افشا کند.

6. آسیب پذیری Cisco ASA Path Traversal (CVE-2018-0296)

نرم افزار Cisco’s Adaptive Security Appliance (ASA) در سال 2018 دارای یک آسیب پذیری پیمایش مسیر بحرانی (CVE-2018-0296) بود. این به مهاجمان احراز هویت نشده اجازه می داد درخواست های HTTP ساخته شده را برای دسترسی به فایل های حساس سیستم ارسال کنند. با سوء استفاده از این نقص، مهاجمان می توانند اطلاعاتی در مورد پیکربندی دستگاه به دست آورند و به طور بالقوه به حملات بیشتر علیه شبکه کمک کنند.

7. پیمایش مسیر سرور GitHub Enterprise (CVE-2020-10546)

در سال 2020، یک آسیب‌پذیری پیمایش مسیر (CVE-2020-10546) در سرور GitHub Enterprise کشف شد. این آسیب پذیری به مهاجمان اجازه می داد تا با دستکاری مسیرهای URL به فایل های دلخواه روی سرور دسترسی داشته باشند. با بهره‌برداری از این، مهاجم می‌تواند به اطلاعات حساس مانند فایل‌های مخزن و داده‌های پیکربندی دسترسی پیدا کند که خطر امنیتی قابل توجهی را برای شرکت‌های آسیب‌دیده ایجاد می‌کند.

8. آسیب پذیری های افزونه وردپرس

بسیاری از افزونه های وردپرس در برابر حملات پیمایش مسیر آسیب پذیر هستند. به عنوان مثال، افزونه محبوب “Duplicate Page” یک آسیب پذیری پیمایش مسیر داشت که به مهاجمان اجازه می داد فایل های دلخواه را از سرور بخوانند. چنین آسیب‌پذیری‌هایی در افزونه‌های پرکاربرد، خطرات قابل‌توجهی را به همراه دارند، زیرا می‌توانند بر تعداد زیادی از وب‌سایت‌ها تأثیر بگذارند و به طور بالقوه داده‌های حساس را در معرض دید قرار دهند و حملات بعدی را امکان‌پذیر کنند.

سخنان پایانی

قرار نیست مقاله‌ای بنویسم که این را به شما بگویم (لل)، اما گاهی اوقات امن‌ترین درها کلیدهای مخفی دارند – و در دنیای امنیت وب، پیمایش مسیر کلیدی است که قطعاً نمی‌خواهید به اشتباه بیفتید. دست ها.

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

آسیب‌پذیری‌های پیمایش مسیر مانند گذرگاه‌های مخفی در یک قلعه هستند که به مهاجمان اجازه می‌دهند از میان دفاع عبور کنند و ویران کنند. با درک نحوه عملکرد این حملات و اجرای دفاعیات، می‌توانیم از قلعه‌های دیجیتال خود در برابر دسترسی غیرمجاز محافظت کنیم. همیشه ورودی های کاربر را تأیید و پاکسازی کنید، و منظورم این است که به طور مرتب کد و تنظیمات سرور خود را مرور کنید تا هرگونه سوء استفاده احتمالی را از بین ببرید.

شیطنت مدیریت شد.

منابع: پورتسویگر (آکادمی امنیت وب)، ویکی پدیا.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا