‹ بازگشت به کتابخانه‌ی رایت‌آپ‌ها
HTTP Request Smuggling شدت: بحرانی

کلاسیک CL.TE — تفسیر متفاوت طول بدنه بین فرانت‌اند و بک‌اند

وقتی یک سرور از Content-Length و دیگری از Transfer-Encoding برای تعیین مرز درخواست پیروی می‌کند.

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

اگر یک درخواست همزمان هدرهای Content-Length و Transfer-Encoding: chunked را داشته باشد، و سرور فرانت (پراکسی) طبق Content-Length بخشی از بدنه را بخواند در حالی که بک‌اند طبق Transfer-Encoding کل بدنه‌ی chunked را پردازش می‌کند، بخشی از بدنه‌ی شما می‌تواند به ابتدای درخواست کاربر بعدی روی همان اتصال persistent «ضمیمه» شود.

چرا خطرناک است

این می‌تواند به سرقت پاسخ یا حتی درخواست کاربر بعدی (شامل کوکی نشست او)، دور زدن کنترل دسترسی لایه‌ی پراکسی، یا مسموم‌کردن یک پاسخ کش‌شده برای همه‌ی کاربران منجر شود.

راه‌حل

نرمال‌سازی کامل هدرهای طول بدنه در اولین لایه‌ی دریافت‌کننده (رد کردن هر درخواستی با هر دو هدر همزمان)، و در صورت امکان، استفاده از HTTP/2 end-to-end که اصلاً این کلاس آسیب‌پذیری را ندارد.

تمرین عملی در آزمایشگاه‌های HTTP Request Smuggling ›