‹ بازگشت به کتابخانه‌ی رایت‌آپ‌ها
Command Injection شدت: بالا

دور زدن فیلتر کلمات کلیدی با ${IFS} به‌جای فاصله

وقتی فیلتر فقط کاراکتر فاصله را مسدود می‌کند، اما shell راه‌های دیگری برای جداسازی آرگومان دارد.

نویسنده: تیم PentesterHub

اگر یک فیلتر ساده‌لوحانه فقط کاراکتر space را در ورودی مسدود کند، در bash می‌توان با ${IFS} (متغیر Internal Field Separator) همان اثر جداسازی آرگومان‌ها را بدون استفاده از فاصله‌ی واقعی ایجاد کرد؛ مثلاً cat${IFS}/etc/passwd دقیقاً معادل cat /etc/passwd اجرا می‌شود.

نکته‌ی کلی‌تر

این نشان می‌دهد چرا blacklist کاراکترها هیچ‌وقت یک دفاع کامل در برابر Command Injection نیست — shell همیشه راه‌های جایگزین دارد (quoting خالی، hex escape، و غیره).

راه‌حل

تنها راه ریشه‌ای، عدم فراخوانی shell با ورودی کاربر است؛ هر blacklist کاراکتری دیر یا زود دور زده می‌شود.

تمرین عملی در آزمایشگاه‌های Command Injection ›