سرفصل‌های آموزشی
آموزش OWASP TOP 10
صفحه های ورود مورد علاقه ی هکرها

صفحه های ورود مورد علاقه ی هکرها

داشتن نقص امنیتی در صفحه های ورود به سیستم یک برنامه وب می تواند یک شخص، شرکت یا سازمان را در معرض حمله ی هکر ها قرار دهد.  

در این مقاله قصد داریم در مورد برخی از اشکال های امنیتی رایج در صفحه های ورود صحبت کنیم. این صفحه ها بسیار مورد توجه  هکر ها هستند پس لازم است با تهدید ها و حمله های آن ها نیز آشنا شویم. 

در این بخش می خواهیم در مورد صفحه های ورود به سیستمی صحبت کنیم که دارای نقاط ضعف امنیتی هستند. یک صفحه ی ورود کاربر، بیش از هر صفحه ای دیگری در دنیای هکر ها، مورد توجه بوده و از این رو، نیاز است بیشترین دقت در رعایت نیاز های امنیتی را داشته باشد. وقتی یک صفحه ی ورود به سیستم، کوچک ترین نکته در حفظ امنیت را در نظر نگیرد، بسیار مورد توجه ی هکر ها قرار خواهد گرفت. 

یکی از مهم ترین قسمت های یک برنامه ی وب، مکانیسم احراز هویت است که سایت را ایمن می کند و همچنین برای هر حساب کاربری محدودیت ایجاد می کند. با این حال، در طول سال ها تست برنامه های وب، هنوز هم بسیار معمول است که مکانیسم های احراز هویت را با آسیب پذیری پیدا کنید. در حال حاضر بیشتر افرادی که در بخش تست نفوذ کار می کنند، بر این عقیده هستند که از هر 10 وب سایتی که آزمایش می کنند، 9 مورد حداقل یکی از آسیب پذیری های مهم را دارند. 

نداشتن قفل مزاحم

اولین صفحه از صفحه های ورود مورد علاقه هکر ها، صفحه هایی هستند که هیچ گونه محافظتی در برابر حمه های حدس رمز عبور (حملات بی رحمانه) ندارند. این صفحه ها در بین هکر های تازه کار نیز، محبوبیت خاصی دارند. چرا که به راحتی و حتی با استفاده از ابزار های ساده، می توانند رمز های عبور را حدس بزنند. 

اگر بخواهیم یک مثال خیلی ساده و عمومی برایتان بیان کنیم، می توانیم به رمز های ورود در گوشی های تلفن همراهتان اشاره کنیم. تا به حال به این مورد برخورده اید که رمز یا الگوی ورود به صفحه اصلی را چند بار اشتباه وارد کرده باشید؟ امتحان کنید. اگر چند بار آن را اشتباه وارد کنید، صفحه شما برای مدتی قفل می شود و به شما اجازه هیچ کاری را نمی دهد. 

می توانید این کار را در صفحه ورود به حساب Gmail نیز امتحان کنید. با وارد کردن 3 بار پسورد اشتباه، صفحه ورود تغییر کرده و همراه با Captcha ظاهر می شود. این نیز نوعی قفل مزاحم می باشد. 

در صفحه های ورود حساب های بانکی نیز می توانید این مورد را مشاهده کنید. بعد از وارد کردن چند بار رمز عبور اشتباه، حساب شما قفل می شود. 

در برخی دیگر از صفحه های ورود، ممکن است قفل مزاحم به شکل دیگری ظاهر شود. برای مثال تصویر زیر بعد از چندین بار وارد کردن رمز نادرست می باشد که نشان می دهد حساب کاربر را قفل کرده است و جهت رفع آن، لازم است کاربر با روش هایی مثل دادن ایمیل یا شماره تلفن، خود را به تایید برساند تا قفل بر طرف شود. 

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

پیام های خطای توصیفی

زمانی که یک کاربر، رمز نادرست را وارد می کند، پیام های خطا نمایش داده می شوند.

با توجه به عدم قفل شدن متجاوز، اگر توسعه دهندگان وب جزئیاتی را در مورد آن چه که آن ها به اشتباه وارد کرده اند ارائه دهند، مانند "شما یک نام کاربری اشتباه وارد کرده اید" یا "رمز عبور وارد شده صحیح نیست"، به مهاجمان کمک می کنند تا در هنگام تلاش برای شکستن رمز عبور، چه چیزی را امتحان کنند و چه چیزی را امتحان نکنند. 

اجازه دهید این مورد را با ذکر مثالی برایتان شرح دهیم. فرض کنید یک کاربر نامعتبر اقدام به ورود به برنامه ای کند. از آن جایی که کاربر نامعتبر است، پس سیستم ورود به او خطا می دهد. حال خطاهایی که ممکن است دریافت شود را با هم بررسی می کنیم: 

  • حساب یافت نشد.
  • نام کاربری نادرست است.
  • رمز عبور نامعتبر است.
  • رمز عبور به درستی نوشته نشده است.
  • کلید Caps Lock روشن (خاموش است.)
  • کاربری با این مشخصات، وجود ندارد.
  • نام کاربری شامل حرف کوچک و بزرگ می شود.
  • نام کاربری شامل عدد نمی شود.
  • و موارد مشابه دیگر.

به تصویر زیر دقت کنید. در این تصویر به کاربر گفته شده است که در نوشتن پسورد نیاز به یک کاراکتر خاص می باشد. بله همان طور که یک کاربر معمولی به راهنمایی نیاز دارد، یک کاربر مهاجم نیز می تواند از آن راهنمایی ها بهره ببرد. 

کاربر مهاجم به راحتی می تواند با داشتن چند پیغام مناسب، متوجه ترکیب های خاص از پسورد شود و آن ها را در حمله brute force در نظر بگیرد. اجازه دهید یک مورد دیگر پیغام را با هم بررسی کنیم: 

از این پیام خطا چه چیزی متوجه می شوید؟ آیا فکر نمی کنید که نام کاربری می تواند یک ایمیل باشد؟ بله این احتمال وجود دارد که نام کاربری همان ایمیل باشد که شامل کاراکتر @ است. حتی اگر ایمیل هم نباشد، به کاربر مخرب اطلاع می دهد، در ترکیبات حمله خود از کاراکتر @ نیز استفاده کند. 

تمامی این خطاها، باعث می شود شاخک های هکر ها تیز شود چرا که به راحتی مفاهیم مهمی را در اختیار او قرار می دهد. برای مثال فرض کنید در یک حمله brute-force، با تکرار چند نام کاربری یا رمز عبور، می توانیم به محدوده کاراکتر های استفاده شده در آن، پی ببریم. 

شمارش کاربر (user enumeration)

این آسیب پذیری یکی از سریع ترین و آسان ترین آسیب پذیری هاست. به راحتی و با استفاده از پیام های خطایی که به کاربر یا بهتر است بگوییم هکر داده می شود، می توان به مطالب مفیدی دست پیدا کرد. دو مورد از متداول ترین مواردی که شمارش کاربر در آن ها رخ می دهد، در صفحه ورود به سایت و عملکرد "رمز ورود خود را فراموش کرده اید" است. 

اگر کاربر نامعتبر اقدام به احراز هویت کند، خطای ارائه شده متفاوت از خطایی است که به یک کاربر معتبر ارائه شده است. ممکن است به یک کاربر نامعتبر خطای "حساب یافت نشد" ارائه شود. با تغییر در پیام خطا، از 10 مورد این آسیب پذیری 9 بار آن برطرف می شود.

کاربر مخرب به دنبال تفاوت در پاسخ سرور بر اساس اعتبار اطلاعات ارسالی است. هنگامی که نام کاربری و رمز عبور نامعتبر وارد می کند، سرور پاسخی را برمی گرداند که می گوید این کاربر وجود ندارد. یک کاربر مخرب می داند که مشکل از رمز عبور نیست، اما این نام کاربری در سیستم وجود ندارد، همان طور که در شکل زیر نشان داده شده است: 

حال اگر نام کاربری معتبری با رمز عبور نامعتبر وارد کند و سرور پاسخ متفاوتی را بازگرداند که نشان می دهد رمز عبور نادرست است، کاربر مخرب می تواند معتبر بودن نام کاربر را متوجه شود، مانند شکل زیر: 

بسیار خوب! حالا کاربر مخرب می داند که سرور چگونه به ورودی های درست و نادرست، پاسخ می دهد. بنابراین می تواند حمله را با نام های کاربری ای معمول انجام دهد، یا ممکن است از داده های سرشماری نام خانوادگی عمومی استفاده کند و هر حرف الفبا را برای تولید لیست های نام کاربری معتبر استفاده کند.

وقتی که لیستی از نام های کاربری معتبر ایجاد شد، کاربر مخرب می تواند دور دیگری از آزمایش brute-force را انجام دهد، تا زمانی که در نهایت دسترسی بدست آید.

یک اصلاح موثر این است که سرور با یک پیام عمومی پاسخ دهد که نشان نمی دهد کدام قسمت نادرست است. هنگامی که پاسخ نشان نمی دهد نام کاربری یا رمز عبور نادرست است، کاربر مخرب نمی تواند اعتبار نام کاربری را تشخیص دهد. شکل زیر مثالی از پاسخ خطای عمومی را نشان می دهد: 

ضعیف بودن رمز عبور 

ضعیف بودن رمز عبور، بیشتر شکسته شدن آن را آسان می کند. پیدا کردن برنامه ای که از سیاست رمز قوی پیروی نکند، غیرمعمول نیست. هنوز هستند برنامه هایی که حداقل طول رمز عبور برای آن ها، فقط پنج کاراکتر است. این آسیب پذیری بسیار رایج است زیرا توسعه دهندگان سعی می کنند تعادل بین امنیت و قابلیت استفاده را به درستی انجام دهند. در مورد رمز های عبورد به صورت مفصل در مقاله "پسوردهای مورد علاقه هکرها" صحبت شد و می توانید به آن مراجعه کنید.

اعمال نشدن پیچیدگی رمز عبور 

یکی دیگر از مواردی که در صفحه های ورود، خطر ساز است، ساده بودن رمز های عبور می باشد. برای اطلاع از رمز های عبور پیچیده می توانید به مقاله "پسوردهای مورد علاقه هکرها" مراجعه کنید. اطمینان حاصل کنید که هر استاندارد یا خط مشی به درستی اجرا شده است. در غیر این صورت، کاربر های شما مسیر راحت تر را در پیش می گیرند و رمز عبور ساده را انتخاب می کنند. 

عدم محافظت ورود به سیستم برنامه های کاربردی با استفاده از رمزگذاری  TLS

یکی از پرخطرترین آسیب پذیری های مربوط به ورود به برنامه، عدم رمزگذاری session های ارتباط است. داشتن SSL و نسخه های قدیمی تر TLS با آسیب پذیری های شناخته شده در برابر حملات man-in-the-middle به اندازه ی کافی بد است. اما اجازه ورود به برنامه های اصلی کسب و کار، سیستم های مدیریت محتوا و سایر سیستم های سازمانی بدون رمزگذاری، عدم دقت کافی را نشان می دهد و مشکل ایجاد خواهد کرد. 

عدم احراز هویت چند عاملی (Multi Factor Authentication)

آسیب پذیری بسیار رایج دیگری که اغلب با مکانیسم احراز هویت وب مواجه می شویم، عدم وجود اقدام های امنیتی اضافی است. بسیار نادر است که مشاهده شود توسعه دهندگان احراز هویت دو عاملی را انجام می دهند، به ویژه در حساب های دارای امتیاز بالا.

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

 

در درس بعدی احراز هویت چند عاملی (Multi Factor Authentication)  و امنیت در برابر حملات Brute-Force با CAPTCHA را مورد بررسی قرار خواهیم داد.