صفحه ی اصلی > اخبار و رویدادها > فناوری اطلاعات > تشریح و بررسی حمله CPDOS برروی وب
تشریح و بررسی حمله CPDOS برروی وب مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط محمد ظاهری   
سه شنبه, 02 شهریور 1400 ساعت 00:10

alt

در این مقاله قصد داریم حمله CPDOS را که یک حمله مبتنی بر وب هست مورد بررسی قرار دهیم. این حمله یکی از حملاتی است که در منابع فارسی بحث و بررسی درمورد آن نشده و برای همین تصمیم گرفتیم تا حدودی به بررسی و آنالیز این حمله بپردازیم.

 

مفهوم حمله CPDOS چیست؟

حمله CPDOS یا در واقع Cache Poisoned Denial Of Service کلاس جدیدی از حملات Web Cache Poisoning میباشد و هدف آن غیرفعال کردن منابع یک وبسایت هست.

 

مکانیزم حمله چیست؟

سناریو و مکانیزم این حمله بصورت زیر است که بررسی خواهیم کرد :

۱) نفوذگر یک درخواست HTTP ارسال میکند بطوریکه Header مربوط به درخواست آلوده است.

۲) سپس Cache Server درخواست را به سرور مبدا انتقال میدهد چرا که نسخه جدیدی از منبع هدف دار بدلیل داشتن Header آلوده قابل ذخیره سازی و بارگزاری نیست.

۳) سمت مبدا یک صفحه Error را بجای آدرس درخواست شده بوسیله cache نمایش میدهد.هنگامی که دسترسی به منابع سایت امکان پذیر نبود در واقع نفوذگر این حمله را موفقیت آمیز میداند. در واقع یوزرها بجای منبع درخواست شده صفحه خطای Cache شده را دریافت میکنند.

تصویر زیر سناریوی این حمله را بصورت واضح نشان میدهد :


alt


با حمله CPDOS یک کلاینت مخرب (نفوذگر) قادر است هر وبسایتی را که از Cache Server استفاده میکنند درگیر این حمله بکند حتی وبسایت هایی که از CDN استفاده میکنند بنابراین اگر وبسایت پشت یک Cloud نیز باشد میتواند درگیر این حمله شود.

 

حملات CPDOS شامل چه مواردی میشود؟

۱) حمله HTTP Header Oversize : هنگامی که یک درخواست HTTP ارسال میشود Header آن شامل اطلاعات مهمی است.استاندارد پروتکل HTTP هیچ محدودیتی برای header های درخواست ها ندارد بنابراین وب سرور ها و سرورهای پروکسی میانی محدودیت های خود را اعمال میکنند. قابل ذکر است حملات CPDOS همانطور که اشاره کردیم روی وبسایت هایی قابل اجراست که از Cache Server و Reverse Proxy بهره میگیرند و برای حمله به اینچنین اهدافی یک نفوذگر یک درخواست آلوده را به سمت هدف ارسال میکند. هنگامی که سناریو مشخص است با زبان های مختلف میتوان اقدام به بهره برداری کرد.

برای ارسال یک Request به همراه Header ها با استفاده از Curl دستور کلی آن به شرح زیر است :

sudo curl -H "GET / HTTP/1.1" -H "Host: 127.0.0.1" -i 127.0.0.1

در حمله CPDOS یک Header آلوده و مخرب حتی میتواند شامل Content-Length با مقدار حجم بیشتر از مقدار حجم وب سرور مقابل باشد.

Request of Attacker to Cache Server:

GET /index.html HTTP/1.1

Host: ourwebsite.com

X-Oversized-Header-1: Big-Size

X-Oversized-Header-2: Big-Size

 

 

Request of Cache Server to Server:

GET /index.html HTTP/1.1

Host: ourwebsite.com

X-Oversized-Header-1: Big-Size

X-Oversized-Header-2: Big-Size

 

 

 

Response of Server to Cache Server :

HTTP/1.1 400 Bad Request

Content-Length: 15

Content-Type: text/plain

 

Some Error

 

 

 

Response of Cache Server to Attacker :

HTTP/1.1 400 Bad Request

Content-Length: 15

Content-Type: text/plain

 

Some Error

 

 

 

Request of Client to Cache Server :

GET /index.html HTTP/1.1

Host: ourwebsite.com

 

 

 

Response of Cache Server to Client :

HTTP/1.1 400 Bad Request

Content-Length: 15

Content-Type: text/plain

 

Some Error

یکی از اقدامات متقابل مؤثر در برابر حملات HHO ، حذف صفحات خطا از ذخیره سازی است.

یکی از دلایل اصلی حملات HHO در CPDOS این است که یک Cache Server آسیب پذیر به طور غیرقانونی پاسخ های حاوی کد خطا مانند 400 Bad Request را بصورت پیش فرض ذخیره می کند که طبق استاندارد HTTP این مجاز نیست.همچنین برای مقابله با این حمله فایروال ها نیز بی تاثیر نیستند به اینصورت که فایروال ها بایستی در مقابل Cache Server و قبل از رسیدن Request به سرور اصلی محتوای مخرب را مسدود کنند.

۲) حمله HTTP Method Override Attack : پروتکل HTTP چندین Method دارد از جمله متدهای PUT , DELETE , POST , GET و ... که بدلیل امنیت بالاتر متدهای DELETE و PUT معمولا استفاده نمیشوند و فعال بودن این متدها برروی وب سرور یک آسیب پذیری تلقی میشود و میتواند مورد سوءاستفاده واقع شود.بسیاری از پروکسی ها و Load Balancer ها و Firewall ها فقط از متدهای POST و GET پشتیبانی میکنند بنابراین روشی که امکان جوابگوی آن در سناریو حمله CPDOS وجود دارد این است که با استفاده از header ای بنام X-HTTP-Method-Override این محدودیت را بایپس کرده و امکان استفاده از متدهای PUT و DELETE فراهم شود.

به این Request و Response توجه فرمایید :

POST /myfiles/document_1 HTTP/1.1

Host: ourwebsite.com

X-HTTP-Method-Override: DELETE

 

 

 

HTTP/1.1 200 OK

Content-Type: text/plain

Content-Length: 50

 

Resource has been successfully removed.

تکه کد درخواست و پاسخی که در بالا قرار داده شده است نشان میدهد که میتوان با استفاده از هدر X-HTTP-Method-Override در پروتکل HTTP امکان استفاده از متد DELETE را که داخل وب سرور غیرفعال شده است بایپس کرد و آن را فعال نمود.

آخرین بروز رسانی در جمعه, 05 شهریور 1400 ساعت 18:06
 

اخبار و رویدادها

با ما باشید.

در باره ما

در باره ما

آخرین نظرات

آخرین نظرات

آدرس

آدرس