حمله Path Traversal Attack یک حمله HTTP برای دسترسی و دستیابی به فایلها و پوشههایی است که خارج از پوشه روت یا ریشه وب ذخیره شدهاند. وبسایتها توسط دو دسته فایلها ساخته میشوند، آنهایی که توسط مرورگر قابل دسترسی هستند مانند فایلهای css و جاوااسکریپت و دیگری آنهایی که توسط مرورگر و بدون احراز هویت قابل دسترسی نیستند :
- ACLs : برای دسترسی نیز به احراز هویت دارند
- پوشه ریشه – root : برای دسترسی نیاز به احراز هویت ندارند
برای مثال پوشه روت پیش فرض وب سرور IIS ویندوز مسیر C:\Inetpub\wwwroot است. بنابراین کاربر نمیتواند به مسیر C:\Windows دسترسی داشته باشد اما میتواند به مسیر C:\Inetpub\wwwroot\news و تمام مسیرهای زیر پوشه root دسترسی داشته باشد.
پوشه Root از دسترسی کاربران به فایلهای مهم و حساس مانند C:\WINDOWS/system32/win.ini در ویندوز و یا /etc/passwd در لینوکس جلوگیری میکند.
آسیبپذیری Traversal Attack میتواند هم به نرمافزار وبسرور و هم به کدهای اپلیکیشن وب مربوط باشد. خرابکار برای این حمله به یک مرورگر و دانشی در مورد محل فایلهای پیشفرض روی سرور نیاز دارد.
[box type=”tip”] مقاله مرتبط : برقراری امنیت وبسایت[/box]
اگه حمله Directory Traversal موفقیت آمیز باشد، خرابکار میتواند به فایلهای مهم و حساس خارج از مسیر ریشه دسترسی داشته باشد و بسته به تنظیمات وبسرور فعالیتهای مخرب دیگری روی آن پیاده کند.
[box type=”note”]ما باور داریم که اگر میخواهیم جلوی حمله سایبریای را بگیریم باید از آن آگاه باشیم، بدانیم چرا این حمله رخ میدهد و حتا با اجرای کامل حمله روی منابع خودمان از جمله وبسایت یا شبکه میتوانیم ضعفها و آسیبپذیریهای منابع خودمان را زودتر از خرابکارها پیدا و آن را رفع کنیم. [/box]
چگونه حمله Directory Traversal انجام میشود :
فرض کنید یک فروشگاه آنلاینی است که عکسهای محصولاتش را برای فروش نشان میدهد. عکسها از طریق کد html مانند <img src=”/loadImage?filename=218.png”> نمایش داده میشوند.
همانطور که ميبینید آدرس loadImage پارامتر filename را میگیرد و یک فایل مشخصی را برمیگرداند. عکسها هم در پوشه /var/www/images/ ذخیره میشوند. بنابراین آدرس عکس 218 در واقع /var/www/images/218.png است.
این اپلیکیشن در برابر حمله پیمایش فهرست هیچ محافظتی ندارد. بنابراین خرابکار میتواند با استفاده از این URL به فایلهای مهم و حساس سیستمی دست پیدا کند:
https://insecure-website.com/loadImage?filename=../../../etc/passwd
در واقع اپلیکیشن از مسیر /var/www/images/../../../etc/passwd شروع به خواندن اطلاعات میکند.
دنباله /.. در مسیر فایل معتبر است و به معنی سطح در ساختار پوشهها است. در مثال بالا سه دنباله /.. از مسیر /var/www/images/ سه سطح به سمت بالا میرود و فایل /etc/passwd خوانده میشود.
در سیستمهای برپایه Unix مسیر /etc/passwd به فایلی میرسد که شامل کاربران ثبتنام شده روی سرور است.
در سیستمهای ویندوزی دنبالههای /.. و \.. هر دو معتبر هستند. در مورد مثال بالا اگر سیستم ویندوز باشد آدرس زیر بکار گرفته میشود :
https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini
چگونه از حمله Path Traversal Attack جلوگیری کنیم؟
بعد از اینکه روی وبسایت خود و یا دوستانتان -با کسب اجازه از آنها- این حمله را تست کردید، اگر این ضعف وجود دارد پس باید جلوی آن را بگیرید. یکی از راهها استفاده از سرویسهایی اینترنتی مانند acunetix است. اما اگر خودتان میخواهید این مشکل را برطرف کنید :
یکی از بهترین راهها کنترل ورودیهای کاربر است. ورودی کاربر باید با لیستی از مقادیر و عبارتهای مجاز مقایسه تا اجازه پروسس به آن داده شود. بعد از اعتبارسنجی ورودی کاربر، برنامه باید این ورودی را به فهرست دایرکتوری اصلی اضافه کند تا با استفاده از API سیستم فایلبندی مسیر را canonicalize کند. بدین معنی که باید تائید کند مسیر از پوشه مورد انتظار شروع میشود.
بسیار آموزنده بود
سلام
میشه لطفا بهم یادش بدین؟
سلام،
تقریبا مشخص نوشته شده، اگر سوالی دارید میتوانید بپرسید.