در این Write up، تست نفوذگر از یک آسیبپذیری Self XSS بهره برده و آن را به یک Account Takeover تبدیل میکند. این موضوع ممکن است دیدگاه شما در خصوص آسیبپذیری Self XSS را تغییر دهد.
توضیحات اولیه
تست نفوذگر معمولا برنامهها را به صورت دستی بررسی مینماید. به همین دلیل زمانی که وی به دنبال آسیبپذیریهایی مانند Open Redirect یا XSS میباشد، پارامترهایی را شناسایی میکند که ممکن است ابزارهای مختلف در این حوزه، قادر به شناسایی آنها نباشند.
برنامهای که تست نفوذگر انتخاب میکند، حدود 4 سال از ایجاد آن میگذرد و توسط بسیاری از محققان حرفهای مورد بررسی قرار گرفته است. ولی با این حال وی بررسی روی آن را شروع میکند.
تست نفوذگر پس از سپری کردن چند روز برای این هدف، بالاخره به نقطهای میرسد که چیزی شبیه به redacted.com/redirect/url-path بوده و یک Open Redirect ساده به نظر میرسد ولی حتی یک Open Redirect هم نبوده، زیرا پیام هشداری مانند شکل زیر را به تست نفوذگر نمایش میدهد:
وی به دلیل کنجکاوی که دارد، در انتهای آدرس عبارت javascript:alert(1) را اضافه میکند و گزینه Continue to site را فشار میدهد تا ببینید چه اتفاقی میافتد و پیام زیر همانطور که در تصویر نیز قابل مشاهده میباشد ظاهر میشود که به معنی اجرای پیلود میباشد:
چالش جانبی
اما، این هدف یک جنبه چالش برانگیز دارد. تست نفوذگر فقط برای اینکه از وجود آسیبپذیری اطمینان حاصل نماید، آدرس را کپی نموده و در یک مرورگر دیگر باز میکند و گزینه Continue to site، دیگر در صفحه ظاهر نشده و در عوض، تصویر زیر نمایش داده میشود:
دلیل رخ دادن این موضوع این است که regex موجود در سایت، در حال شناسایی کاراکترهای خاص مانند ” ‘><*/ می باشد و به محض اینکه هر کاراکتر خاصی را بعد از / # redirect شناسایی کند، گزینه Continue to site را حذف مینماید.
تست نفوذگر بعد از تقریبا ۱۰۰ تلاش ناموفق و بررسی فراوان، به یک راهحل یا سناریوی مناسب مانند مواردی که در وبلاگها و یا Writeupها موجود میباشد، نمیرسد و تصمیم میگیرد که این هدف را رها کند.
بعد از ۱۵ روز، وی با “Milind Purswani” صحبت میکند و سناریو را برای وی شرح میدهد و از او میپرسد که آیا راه حلی دارد و یا هیچ تحقیقی در گذشته برای بهرهبرداری از چنین سناریوهایی وجود دارد؟ در کمال تعجب او راه حلی پیدا میکند.
بهره برداری
در این بخش ابتدا بررسی میشود که آیا قابلیتX-FRAME OPTIONS در سایت وجود دارد یا خیر.
پس از بررسی، مشخص میشود که قابلیتX-FRAME OPTIONS در سایت فعال نمیباشد و این بدان معنی است که تست نفوذگر میتواند یک کد جاوا اسکریپت را نوشته و آن را در وب سایت خود قرار دهد و از این آسیبپذیری بهرهبرداری بیشتری کند.
پس کاری که تست نفوذگر انجام میدهد، این است که کد زیر را نوشته و صفحه سایت هدف را در سرور خود توسط یکiframe فراخوانی مینماید:
بنابراین اساسا این آسیبپذیری، از عدم تنظیم X-FRAME OPTIONS استفاده مینماید که به هر صفحهای اجازه میدهد تا در یک iframe بارگذاری شود. هنگامی که صفحه در یک iframe بارگذاری شد، تست نفوذگر تابع ChangeSrc() را فراخوانی میکند که این کار منجر به جایگزین شدن URL معتبر redacted.com/#/redirect/https://@evil.com\@www.redacted.com به URL آسیبپذیری redacted.com/#/redirect/javascript:alert(document.cookie) میشود.
از آنجایی که هیچ تعاملی سمت سرور وجود ندارد و URL پس از بارگذاری صفحه جایگزین میشود، با کلیک بر روی دکمه Continue to site، میتوانیم ببینیم که پیلود XSS اجرا شده و کوکی کاربر بازگشت داده می شود:
این مسئله دارای تاثیر زیادی است بدین صورت که وقتی، یک کاربر تایید هویت شده از سرور تست نفوذگر بازدید میکند، کوکی تایید هویت شده او باز گشت داده شده و به سرور وی ارسال خواهد شد. در واقع بدین شکل، یک حمله Account Takeover علیه هدف رخ داده که تنها با یک کلیک کاربران انجام میپذیرد.
منبع: