اوپن ریدایرکت یک آسیب پذیری متفاوت از سایر باگها و مشکلات امنیتی است که به طور مستقیم به سایت شما آسیبی وارد نمیکند بلکه کابران شما را تحت تاثیر قرار میدهد.
این باگ به نفوذگر دسترسی به اطلاعات , تزریق کد یا ... نمیدهد , بلکه تنها استفاده از آن انتقال کاربر به سایت دیگری است برای مثال صفحه دوم فروشگاه سایت زیر دارای این آسیب پذیری است:
http://site.com/shop/page=2
در این باگ, ورودی بدون هیچ محدودیت و بررسی اجرا میشود یعنی اگر هکر بجای عدد 2 که یک صفحه از سایت اصلی است آدرس صفحه دیگری بدهد , کاربر به آن منتقل میشود.مثال: Http://site.com/shop/page=http://website.com
این باگ ممکن است در تمام ورودی ها وجود نداشته باشد و فقط یکی از صفحات آسیب پذیر باشد. استفاده هکر از این باگ میتواند هدفی چون دریافت ترافیک برای سایت خودش و یا انتقال کاربر به لینکی مخرب باشد. که از طریق انتقال کاربر به لینک مخرب میتوان توقع هرگونه سوءاستفاده ای از کاربر از جمله هک کامل سیستم آن را داشت.
Open Redirect باگ نسبتا رایجی میباشد و در سایت های بسیار بزگ هم دیده شده است. از این آسیب پذیری بیشتر در حملات فیشینگ استفاده میشود که مثلا هکر با انتقال کاربر به درگاه پرداخت جعلی خود اقدام به سرقت اطلاعات کارت میکند.
یا به عنوان مثالی کاملتر و اعلاء تر هکر سایتی مشابه سایت شما میسازد و از طریق ورودی آسیب پذیر , کاربر را به سایت جعلی خود منتقل میکند و حتی آدرس سایت را نیز مشابه آدرس اصلی قرار میدهد مثلا:
Siteshop.com آدرس اصلی
Sitashop.com آدرس جعلی
و با این کار سایت را مطمعن تر و بسیار مشابه سایت اصلی میکند که کاربر به راحتی و با بیدقتی فریب میخورد و اطلاعات او به خطر میافتد و بسته به حوزه فعالیت سایت اصلی هکر اقدام به سرقت اطلاعات میکند. مثلا در سایت فروشگاهی اطلاعات کارت بانکی کاربر را بهدست میآورد , یا در مثالی دیگر در سایت فروش هاست از طریق فیشینگ اطلاعات ورود به سایت کاربر ماننده رمز و پسورد را سرقت میکند.
حال که علت اهمیت این باگ روشن شد , راهکار های جلوگیری و ایمن سازی آن را بررسی میکنیم. راحتترین کار مجهز شدن سایت و سرور به فایروالی قدرتمند است. از دیگر راهکار ها میتوان به ایجاد محدودیت در ورودی , کنترل طول کاراکتر ها , نوع ورودی , فیلتر کلماتی چون ( http , https , url , Redirect , …) و منع تعیین مقصد از سوی کاربر اشاره کرد.
مثلا اگر ورودیهای شما اعداد هستند ( 5 , 16 , … ) که مشخص کننده شماره صفحات میباشند , ورود الفبا را منع کنید. اگر ترکیب اعدا و حروف هستند مانند ( page16 , news8 , … ) طول پارامترهای ورودی را محدود کنید و یا کاراکتر هایی مانند ( : , ? , / , = ) را از ورودی حذف کنید. تا امکان سوءاستفاده از آن تا حد بسیار قابل توجهای پایین بیاید.
Source: Mahdi Ahmadi