دور زدن فیلتر کلمات کلیدی SSTI با استفاده از دسترسی زنجیرهای به subclasses
وقتی یک فیلتر ساده کلمات مثل __class__ را مسدود میکند، اما راههای دیگری برای دسترسی به اشیاء داخلی وجود دارد.
اگر یک WAF یا فیلتر ساده کلمات کلیدی خطرناک (مثل __class__ یا __import__) را مسدود کند، در پایتون/Jinja2 میتوان با ترکیب attributeهای دیگر (مثل ''.__class__.__mro__[1].__subclasses__() با فاصلهگذاری یا escape متفاوت) به همان اشیاء داخلی دسترسی پیدا کرد، بدون استفاده از رشتهی دقیقی که فیلتر مسدود کرده.
نکتهی کلی
مثل Command Injection، فیلتر کردن کلمات کلیدی هیچوقت یک دفاع کامل نیست؛ موتورهای قالب معمولاً راههای جایگزین متعددی برای رسیدن به همان قابلیت دارند.
راهحل
اجرای کد قالب در یک sandbox واقعی (نه فیلتر کلمات کلیدی)، یا بهتر، حذف کامل امکان تزریق کاربر به ساختار template.
تمرین عملی در آزمایشگاههای SSTI (Server-Side Template Injection) ›