شرایط رقابتی و قاچاق درخواست
شرایط رقابتی / قاچاق درخواست، دو ابزار تخصصی برای حملات HTTP حساس به زمانبندی و حملات در سطح پروتکل فراهم میکند.
شرایط رقابتی
زبانهٔ شرایط رقابتی چندین نسخه از یک درخواست را همزمان به یک نقطهٔ پایانی میفرستد و امکان مقایسهٔ پاسخها و زمانبندی اجرای موازی آنها را فراهم میکند.
زمان استفاده
- TOCTOU (زمان بررسی/زمان استفاده): آزمایش کنید که آیا درخواستهای همزمان میتوانند بین یک بررسی و عملیات تغییر وضعیت فاصله بیندازند.
- دستکاری حساب: تغییر موجودی، استفاده از کوپن یا عملیات دارای سقف را همزمان ارسال کنید تا خرجکردن دوباره یا استفاده از کوپن بیش از حد مجاز را آزمایش کنید.
- دورزدن محدودیت رأی یا نرخ: بررسی کنید که آیا محدودیتهای هر کاربر بهصورت اتمی اعمال میشوند.
اجرای آزمون رقابت
- درخواست هدف را در زبانهٔ شرایط رقابتی بسازید یا به آن بفرستید.
- مقدار همزمانی را تنظیم کنید؛ یعنی تعداد نسخههای موازی که باید ارسال شوند.
- روی ارسال رقابتی کلیک کنید. همهٔ نسخهها تا حد امکان نزدیک به یک زمان ارسال میشوند.
- جدول پاسخها را مرور کنید: کد وضعیت، بدنه و زمان سپریشده برای هر نسخه.
- تفاوت بین پاسخها (کدهای وضعیت متفاوت، بدنههای پاسخ متفاوت یا موفقیت غیرمنتظره در نسخههای 2+) نشاندهندهٔ یک پنجرهٔ رقابت است.
رقابت تکبستهای HTTP/2
وقتی هدف از HTTP/2 پشتیبانی میکند، حالت HTTP/2 را فعال کنید. HTTP/2 همهٔ درخواستهای موازی را روی یک اتصال چندگانهسازی میکند؛ این کار نوسان تأخیر شبکه را حذف میکند و رسیدن همزمان درخواستها به سرور را قابلاعتمادتر میسازد.
قاچاق درخواست HTTP
زبانهٔ قاچاق درخواست، نحوهٔ پردازش سرآیندهای مبهم Content-Length و Transfer-Encoding توسط سرور را آزمایش میکند تا ناهماهنگی فرانتاند/بکاند را تشخیص دهد.
پیشزمینه
وقتی پراکسی معکوس و سرور بکاند دربارهٔ محل پایان یک درخواست و آغاز درخواست بعدی اختلاف داشته باشند، یک پیشوند قاچاقشده از درخواست A میتواند به ابتدای درخواست B افزوده شود. اثر آن از مسمومسازی کش تا دورزدن احراز هویت و تزریق درخواست دلخواه متغیر است.
انواع ناهماهنگی
| نوع | توضیح |
|---|---|
| CL.TE | فرانتاند از Content-Length و بکاند از Transfer-Encoding استفاده میکند |
| TE.CL | فرانتاند از Transfer-Encoding و بکاند از Content-Length استفاده میکند |
| TE.TE | هر دو از Transfer-Encoding استفاده میکنند، اما به یک سرآیند مبهمسازیشده واکنش متفاوتی نشان میدهند |
اجرای کاوش قاچاق درخواست
- نقطهٔ پایانی هدف را در زبانهٔ قاچاق درخواست انتخاب کنید.
- نوع ناهماهنگی مورد آزمون را انتخاب کنید.
- روی اجرای آزمون قاچاق درخواست کلیک کنید. ابزار درخواست دستکاریشده را ارسال میکند و پاسخ را اندازه میگیرد.
- پایان مهلت یا پاسخ غیرمنتظره به درخواست دوم در توالی، نشاندهندهٔ ناهماهنگی احتمالی است.
- پیش از ایجاد یافته، بهصورت دستی تأیید کنید؛ وقتی شرایط شبکه باعث پایان مهلت نامرتبط با کاوش میشوند، مثبت کاذب رخ میدهد.