آسیبپذیری HTTP Request Smuggling
HTTP Request Smuggling یک نوع حمله وب است که به مهاجم اجازه میدهد با سوءاستفاده از تفاوت در نحوه پردازش درخواستهای HTTP توسط سرورهای میانی (مانند پروکسیها، فایروالها یا Load Balancerها)، اطلاعات را استخراج کرده یا حملات دیگری را اجرا کند. این آسیبپذیری اولین بار در سال 2005 توسط Watchfire شناسایی شد و همچنان به عنوان یک تهدید جدی باقی مانده است.
مکانیزم حمله
HTTP Request Smuggling زمانی رخ میدهد که سرورهای جلویی و پشتی درخواستهای HTTP را به روشهای متفاوتی تجزیه و تفسیر کنند. مهاجم با ارسال درخواستهای مخرب، میتواند این تفاوتها را برای ارسال درخواستهای اضافی، دور زدن مکانیزمهای امنیتی و دسترسی غیرمجاز به دادهها بهرهبرداری کند.
این حمله عمدتاً از دو نوع سربرگ HTTP استفاده میکند:
- Content-Length: این سربرگ طول بدنه درخواست را مشخص میکند.
- Transfer-Encoding: این سربرگ نوع کدگذاری انتقال را مشخص میکند (معمولاً برای Chunked Encoding استفاده میشود).
سناریوی حمله
فرض کنید مهاجم یک درخواست HTTP به صورت زیر ارسال میکند:
POST / HTTP/1.1
Host: example.com
Content-Length: 13
Transfer-Encoding: chunked
0
GET /malicious HTTP/1.1
Host: example.com
در این سناریو، اگر سرور جلویی (Front-End) از Content-Length برای تعیین طول بدنه استفاده کند و سرور پشتی (Back-End) از Transfer-Encoding پیروی کند، سرور جلویی بدنه درخواست را شامل 13 بایت (0\n\nGET /malicious HTTP/1.1) تفسیر کرده و بقیه درخواست را نادیده میگیرد. اما سرور پشتی درخواست دوم (GET /malicious HTTP/1.1) را به عنوان یک درخواست جداگانه پردازش میکند.
پیامدهای حمله
دور زدن مکانیزمهای امنیتی: مهاجم میتواند با ارسال درخواستهای مخرب، از مکانیزمهای امنیتی سرور جلویی عبور کرده و به سرور پشتی دسترسی پیدا کند.
اجرای دستورات از راه دور: مهاجم میتواند دستورات مخرب را اجرا کرده و به دادههای حساس دسترسی پیدا کند.
سرقت اطلاعات: امکان دسترسی به اطلاعات محرمانه یا نشستهای کاربران وجود دارد.
خرابکاری و اختلال در سرویسها: مهاجم میتواند با ارسال درخواستهای متعدد و مخرب، سرویسها را دچار اختلال کند.
راهکارهای مقابله
بروزرسانی نرمافزارها: اطمینان حاصل کنید که تمامی سرورها و نرمافزارهای میانجی به آخرین نسخهها بروز شدهاند و از آسیبپذیریها مصون هستند.
استفاده از سرور پروکسی معتبر: استفاده از سرورهای پروکسی که به درستی پیادهسازی شدهاند و به صورت هماهنگ با سرورهای پشتی کار میکنند.
پیکربندی صحیح سرورها: پیکربندی سرورها به گونهای که فقط یک نوع سربرگ برای تعیین طول بدنه درخواست پذیرفته شود.
تست و بررسی مداوم: انجام تستهای امنیتی دورهای و بررسی سیستمها برای شناسایی نقاط ضعف و آسیبپذیریها.
استفاده از WAF (Web Application Firewall): استفاده از فایروالهای برنامههای وب که توانایی تشخیص و جلوگیری از حملات HTTP Request Smuggling را دارند.
ابزارها و تکنیکهای شناسایی
Burp Suite: یکی از معروفترین ابزارهای تست نفوذ که دارای پلاگینهایی برای شناسایی و بهرهبرداری از HTTP Request Smuggling است.
OWASP ZAP: ابزار متنباز دیگری که برای شناسایی آسیبپذیریهای وب استفاده میشود و میتواند به شناسایی این نوع حمله کمک کند.
اسکریپتهای سفارشی: متخصصان امنیت میتوانند اسکریپتهای سفارشی برای بررسی نقاط ضعف سرورها و تست HTTP Request Smuggling بنویسند.
کی فکرش رو میکرد که این سایت ها هم دچار حمله بشن؟
با توجه به تحقیقات و منابعی که موجود است ،3 مورد از معروف ترین سایت هایی که کسی فکرش را هم نمیکرد اینجا آوده ایم و با روندی که طی شده آشنا بشیم:
1. GitHub
در سال 2020، GitHub یکی از قربانیان بزرگ حملات HTTP Request Smuggling بود. محققان امنیتی از PortSwigger یک آسیبپذیری در زیرساختهای GitHub کشف کردند که به آنها اجازه میداد تا از طریق پروکسی معکوس، درخواستهای مخرب را به سرورهای پشتین GitHub ارسال کنند.
- حالت حمله: مهاجم توانست با ارسال درخواستهای HTTP خاص که حاوی هر دو سربرگ Content-Length و Transfer-Encoding بود، سرورهای جلویی و پشتی GitHub را به گونهای فریب دهد که درخواستهای مخرب را پردازش کنند.
- جزئیات: این حمله به محققان امکان دسترسی به دادههای حساس کاربران را میداد و میتوانست منجر به افشای اطلاعات کاربرانی شود که در حال استفاده از GitHub بودند. GitHub پس از شناسایی این آسیبپذیری، به سرعت اقدامات لازم برای رفع آن را انجام داد.
2. Airbnb
Airbnb نیز در سال 2019 دچار حمله HTTP Request Smuggling شد. محققان امنیتی موفق به شناسایی یک آسیبپذیری در زیرساختهای وب این شرکت شدند که میتوانست منجر به بهرهبرداری از این آسیبپذیری شود.
- حالت حمله: مهاجم توانست با ارسال درخواستهای HTTP که به صورت خاصی دستکاری شده بودند، درخواستهای مخرب خود را به سرورهای پشتی Airbnb ارسال کند.
- جزئیات: این آسیبپذیری میتوانست به مهاجم اجازه دهد تا اطلاعات کاربری را استخراج کند، نشستهای کاربران را ربوده و حتی عملیات مخرب دیگری را انجام دهد. تیم امنیتی Airbnb بلافاصله پس از شناسایی این آسیبپذیری، آن را رفع کرد و اقدامات امنیتی بیشتری را برای جلوگیری از چنین حملاتی در آینده اتخاذ کرد.
3. Yahoo
در سال 2018، Yahoo نیز به عنوان یکی از قربانیان معروف حملات HTTP Request Smuggling شناخته شد. محققان امنیتی توانستند یک آسیبپذیری در سرورهای وب Yahoo کشف کنند که به آنها اجازه میداد تا درخواستهای مخرب خود را به سرورهای پشتی ارسال کنند.
- حالت حمله: مهاجم با استفاده از درخواستهای HTTP که دارای سربرگهای Content-Length و Transfer-Encoding به صورت مخلوط بود، توانست سرورهای جلویی و پشتی Yahoo را فریب دهد.
- جزئیات: این حمله به مهاجم امکان دسترسی به دادههای حساس کاربران و حتی اجرای کدهای مخرب بر روی سرورهای Yahoo را میداد. Yahoo پس از آگاه شدن از این آسیبپذیری، به سرعت آن را رفع کرد و سیستمهای امنیتی خود را بهبود بخشید.
HTTP Request Smuggling یک آسیبپذیری خطرناک و پیچیده است که میتواند منجر به حملات جدی و از دست رفتن دادهها شود. با درک صحیح نحوه کار این حمله و اتخاذ راهکارهای مناسب، میتوان از وقوع آن جلوگیری کرد و امنیت سیستمهای وب را بهبود بخشید. استفاده از ابزارهای تست نفوذ، بروزرسانی مداوم نرمافزارها و پیکربندی صحیح سرورها از جمله اقداماتی است که میتواند به کاهش خطرات مرتبط با این آسیبپذیری کمک کند.
اولین نفر باشید که نظر ارسال میکنید