آسیب پذیری مسموم سازی تنظیم مجدد کلمه عبور (Password Reset Poisoning) تکنیکی است که مهاجم با استفاده از آن، یک وب سایت آسیب پذیر را به نحوی دستکاری میکند که باعث ایجاد لینک تنظیم مجدد رمز عبور می شود. در واقع این لینک به دامنه تحت کنترل مهاجم اشاره می کند. مهاجمان با استفاده از این روش به توکن های مخفی که برای تنظیم رمزهای عبور ارسال می شوند دست یافته و می توانند کلمات عبور حساب های کاربری کاربران را تغییر داده و در نهایت نیز به آن حساب ها دسترسی پیدا کنند.
این تکنیک نخستین بار در سال 2013 میلادی، توسط “James Kettle” مدیر تحقیق شرکت PortSwigger شناسایی شد. برای کسب اطلاعات بیشتر درباره این تحقیق و سایر فنون جدید شناسایی شده توسط Kettle و تیم او میتوانید به وب سایت این شرکت به آدرس PortSwigger research مراجعه کنید.
نحوه عملکرد تکنیک مسموم سازی تنظیم مجدد کلمه عبور
تقریباً تمام وب سایت هایی که کاربران برای ورود به آنها باید لاگین کنند، امکان تنظیم مجدد رمز عبور در صورت فراموشی کاربر را دارند. این کار به روش های مختلفی انجام میشود که میزان امنیت و عملی بودن آنها با یکدیگر متفاوت است. یکی از رایج ترین روش ها به این صورت است که:
1- کاربر، نام کاربری یا آدرس ایمیل خود را وارد کرده و درخواست تنظیم مجدد کلمه عبور را ارسال میکند.
2- وب سایت بررسی می کند آیا چنین کاربری وجود دارد یا خیر. سپس یک توکن منحصر به فرد موقت با احتمال تکرار کم را تولید کرده و آن را به حساب کاربری کاربر در سمت Back End اختصاص میدهد.
3- وب سایت، یک ایمیل به کاربر ارسال میکند که حاوی لینکی برای تنظیم مجدد رمز عبور وی است. توکن منحصر به فرد تنظیم مجدد کلمه عبور کاربر به عنوان یکی از پارامترهای این درخواست، در آدرس URL مرتبط به آن درج میشود:
https://normal-website.com/reset?token=0a1b2c3d4e5f6g7h8i9j
4- هنگامی که کاربر مربوطه، آدرس URL را مشاهده کند، وب سایت اعتبار توکن را بررسی کرده و از آن برای تعیین حساب کاربری که قرار است کلمه عبور آن مجدداً تنظیم شود، استفاده میکند. اگر همه چیز طبق انتظار پیش برود، کاربر امکان تعریف رمز عبور جدید خود را خواهد داشت. در نهایت هم این توکن از بین میرود.
این فرایند به حد کافی ساده است و نسبت به سایر روشها امنیت مناسبی دارد. البته امنیت آن به این موضوع بستگی دارد که کاربر مورد نظر به صندوق ورودی ایمیلهای خویش (و در نتیجه به توکن منحصر به فردش) دسترسی داشته باشد. مسموم کردن تنظیم مجدد رمز عبور روشی برای سرقت این توکن به منظور تغییر رمز عبور کاربران است.
نحوه اجرای حمله Password Reset Poisoning
اگر آدرس URL که برای کاربر ارسال میشود به صورت پویا و بر اساس یک ورودی قابل کنترل مانند Host header ایجاد شود، امکان اجرای حمله مسموم سازی تنظیم مجدد کلمه عبور به روش زیر وجود دارد:
1- مهاجم، نام کاربری یا آدرس ایمیل قربانی را به دست آورده و از طرف او درخواست تنظیم مجدد رمز عبور را ارسال میکند. هنگام ارسال فرم، مهاجم درخواست HTTP ایجاد شده را بررسی و تفسیر کرده و Host header را به صورتی تغییر میدهد که به دامنه تحت کنترل خود اشاره کند (به عنوان مثال evil-user.net).
2- سپس قربانی، ایمیل واقعی را از وب سایت دریافت میکند که به ظاهر حاوی یک لینک معمولی برای تنظیم مجدد کلمه عبور بوده و شامل توکن تنظیم مجدد رمز عبور است که برای حساب کاربری وی ساخته شده است اما نام دامنه موجود در آن، به سرور تحت کنترل مهاجم اشاره دارد:
https://evil-user.net/reset?token=0a1b2c3d4e5f6g7h8i9j
3- اگر قربانی بر روی این لینک کلیک کند (یا این لینک به روش دیگری مثلاً توسط یک اسکنر ضدویروس بازیابی شود)، توکن تنظیم مجدد رمز عبور به سمت سرور مهاجم ارسال خواهد شد.
4- مهاجم میتواند وارد آدرس URL واقعی مربوط به سایت آسیب پذیر شده و توکن به سرقت رفته را از طریق پارامتر مرتبط، وارد آن کند. پس از انجام این کار، مهاجم قادر به تنظیم مجدد کلمه عبور قربانی و ورود به حساب کاربری او خواهد بود.
در حمله واقعی، مهاجم تلاش می کند تا احتمال کلیک روی این لینک توسط قربانی را افزایش دهد. برای مثال به او هشدار میدهد که نفوذی به حساب کاربری وی صورت گرفته است.
حتی اگر امکان کنترل بر لینک تنظیم مجدد رمز عبور وجود نداشته باشد، گاهی وقت ها امکان استفاده از Host header برای تزریق کدهای HTML به ایمیل های حساس وجود دارد. توجه داشته باشید که معمولاً کلاینت های ایمیل، کدهای جاوا اسکریپت را اجرا نمیکنند و در چنین مواردی ممکن است از فنون دیگری مثل Dangling Markup استفاده شود.
منبع: portswigger