آسیبپذیری Directory Traversal چیست و چطور از آن محافظت کنیم؟
آسیبپذیری Directory Traversal یا به عبارت دیگر «پیمایش دایرکتوری» یکی از خطرناکترین و رایجترین مشکلات امنیتی در برنامههای وب است که به مهاجم اجازه میدهد به فایلها و دایرکتوریهای خارج از محدوده مجاز برنامه دسترسی پیدا کند. این نوع حمله به مهاجم این امکان را میدهد تا به اطلاعات حساس و فایلهایی که نباید در دسترس باشند، دسترسی یابد و گاهی حتی بتواند کد مخرب را اجرا کند.
۱. Directory Traversal چیست؟
Directory Traversal که به آن Path Traversal نیز گفته میشود، زمانی رخ میدهد که برنامههای وب، ورودیهای کاربر را به درستی اعتبارسنجی نکنند و اجازه دهند کاربر با استفاده از رشتههایی مانند ../
یا ..\
به بالاترین سطوح دایرکتوری در سرور دسترسی پیدا کند.
برای مثال، فرض کنید یک سایت امکان مشاهده فایلهایی را میدهد و ورودی نام فایل به صورت مستقیم از کاربر گرفته میشود:
example.com/view?file=report.txt
اگر اعتبارسنجی مناسب نباشد، مهاجم میتواند مقدار پارامتر را به شکل زیر تغییر دهد تا به فایلهای حساستر دسترسی یابد:
example.com/view?file=../../../../etc/passwd
۲. چرا Directory Traversal خطرناک است؟
- دسترسی به فایلهای حساس سیستم مانند فایلهای پیکربندی، پسوردها و دادههای خصوصی.
- ممکن است مهاجم بتواند کدهای مخرب را در سیستم بارگذاری یا اجرا کند.
- میتواند به افشای اطلاعات مهم یا دسترسی غیرمجاز به منابع منجر شود.
- آسیبپذیری Directory Traversal پایهای برای حملات پیچیدهتر است.
۳. چطور حملات Directory Traversal انجام میشود؟
در بیشتر موارد، این حمله از طریق پارامترهای URL، کوکیها، هدرها یا هر ورودی که به برنامه اجازه میدهد فایلی را بارگذاری یا بخواند، انجام میشود. مهاجم با وارد کردن مسیرهای خاص حاوی کاراکترهای «../» تلاش میکند به دایرکتوریهای بالاتر دسترسی پیدا کند.
۴. روشهای پیشگیری از Directory Traversal
- اعتبارسنجی دقیق ورودیها: هیچ ورودی که قرار است مسیر فایل را تعیین کند، نباید مستقیماً از کاربر دریافت شود بدون کنترل. استفاده از whitelist برای نام فایلها و مسیرهای مجاز.
- نپذیرفتن کاراکترهای خاص: جلوگیری از ورود کاراکترهایی مانند
../
یا..\
در پارامترهای ورودی. - محدود کردن مسیر فایلها: استفاده از توابعی که اجازه دسترسی فقط به دایرکتوریهای مشخص شده را میدهند (مثل realpath در PHP برای بررسی مسیر نهایی).
- اجرای برنامه با حداقل سطح دسترسی: دسترسیهای فایل سیستم را به حداقل برسانید تا حتی در صورت نفوذ، آسیب کمتری وارد شود.
- بهروزرسانی نرمافزار: اطمینان حاصل کنید که CMS، پلاگینها و نرمافزارهای مورد استفاده بهروز هستند و پچهای امنیتی نصب شدهاند.
- استفاده از Web Application Firewall (WAF): WAF میتواند درخواستهای مشکوک شامل حملات Directory Traversal را شناسایی و مسدود کند.
۵. نمونه حمله Directory Traversal
فرض کنید یک سایت با پارامتر زیر فایلها را نمایش میدهد:
example.com/showfile?name=info.txt
مهاجم میتواند مقدار پارامتر را به شکل زیر تغییر دهد تا به فایل حساس /etc/passwd
دسترسی پیدا کند:
example.com/showfile?name=../../../../etc/passwd
اگر سایت بدون کنترل ورودی این فایل را نمایش دهد، اطلاعات حیاتی سیستم به خطر میافتد.
۶. ابزارها و تست Directory Traversal
برای شناسایی آسیبپذیری Directory Traversal میتوانید از ابزارهای زیر استفاده کنید:
- Burp Suite و OWASP ZAP: ارسال درخواستهای تستی حاوی مسیرهای traversal
- Nikto: اسکنر امنیتی وب که برخی آسیبپذیریهای مسیریابی را پیدا میکند.
- Manual Testing: امتحان پارامترهای مختلف با رشتههای traversal مانند
../
و بررسی پاسخ سرور.
۷. نتیجهگیری
آسیبپذیری Directory Traversal یکی از مشکلات جدی امنیتی است که میتواند امنیت وبسایتها و دادههای حساس آنها را به خطر بیندازد. بهترین راهکار مقابله با این آسیبپذیری، اعتبارسنجی دقیق ورودیها، محدود کردن دسترسی به فایلها و استفاده از ابزارهای امنیتی مناسب است. همچنین بهروزرسانی مرتب نرمافزارها و استفاده از لایههای حفاظتی مانند WAF نقش مهمی در کاهش ریسکها دارد.
با رعایت این نکات میتوانید به شکل مؤثری از سایت خود در برابر حملات Directory Traversal محافظت کنید و امنیت سیستم خود را تضمین نمایید.