آسیب پذیری Reflected XSS در زیرمجموعه های Facebook

در این پست قصد داریم تا به نحوه اکسپلویت آسیب پذیری XSS یا Cross Site Scripting در یکی از زیردامنه های فیسبوک بپردازیم.

جمع آوری اطلاعات

تست نفوذگر جهت شناسایی آسیب پذیری، ابتدا اقدام به جمع آوری زیردامنه های سایت فیسبوک می نماید. دامنه مورد نظر برای این کار thefacebook.com می باشد. تست نفوذگر از ابزارهایی مانند findomain، Subfinder، Assetfinder و موارد مشابه برای شناسایی زیردامنه ها استفاده می نماید.

سپس برای شناسایی سایت ها با پروتکل های HTTP و HTTPS از ابزار httprobe استفاده می کند.

وی پس از شناسایی زیردامنه ها، از ابزار ffuf برای شناسایی دایرکتوری سایت ها استفاده نموده و خروجی این ابزار را برای شناسایی آسیب پذیری های رایج بررسی می نماید.

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

mirror-ext.glbx.thefacebook.com

XSS-Writeup

نتیجه ابزار ffuf نیز به صورت زیر است که صفحه help را نمایش می دهد:

XSS-Writeup

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

اکسپلویت آسیب پذیری

در نگاه اول این دایرکتوری یک صفحه Help را نمایش می دهد که دارای یک آدرس ایمیل جهت پشتیبانی بوده و جذاب به نظر نمی رسد. ولی پس از مشاهده سورس صفحه موارد جالبی مشاهده می شود:

XSS-Writeup

به خط دوم دقت کنید. تست نفوذگر صفحه اشاره شده در این خط را باز می کند که یک صفحه خالی می باشد:

XSS-Writeup

این بار مورد خاصی در سورس صفحه شناسایی نشده و تست نفوذگر تصمیم می گیرد تا صفحات مختلف php دیگری را در این صفحه شناسایی نماید. برای این منظور از یک wordlist استفاده می نماید و چهار فایل زیر را شناسایی می کند:

XSS-Writeup

این صفحات نیز مانند صفحه mirror.php، خالی بودند ولی صفحه header.php با صفحات دیگر تفاوت داشت.

XSS-Writeup

پس از بررسی سورس صفحه، مشخص می شود که مقدار تگ href در صفحه بازگشت داده می شود و ممکن است دارای آسیب پذیری XSS باشد.

XSS-Writeup

به همین منظور تست نفوذگر بررسی بیشتر در این صفحه برای شناسایی آسیب پذیری XSS را آغاز می کند.
پس از اضافه نمودن کاراکترهایی مانند تگ باز و بسته به انتهای URL، پیام page not found نمایش داده می شود:

XSS-Writeup

تست نفوذگر اقدام به بررسی بیشتر این صفحه نموده و شروع به Brute Force پارامترهای مختلف می نماید ولی موردی پیدا نمی کند.

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

brutelogic.com.br/blog/looking-xss-php-source

XSS-Writeup

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

XSS-Writeup

سپس تست نفوذگر مجدد اقدام به اضافه نمودن تگ باز و بسته در آدرس می نماید که متوجه می شود در سورس صفحه این تگ ها به صورت Encode شده نمایش داده می شوند:

XSS-Writeup

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

XSS-Writeup

وی در ادامه از پیلود زیر برای اکسپلویت آسیب پذیری Cross Site Scripting شناسایی شده استفاده می کند:

XSS-Writeup

و خروجی این پیلود به صورت زیر اجرا می شود:

XSS-Writeup

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

XSS-Writeup

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

XSS-Writeup

شرکت فیسبوک برای شناسایی این آسیب پذیری XSS به تست نفوذگر 500 دلار بانتی پرداخت می نماید:

XSS-Writeup

همچنین فیلم مربوط به اثبات این آسیب پذیری نیز در لینک زیر قابل مشاهده می باشد:

www.youtube.com/watch?v=TUMYeWTTfbM

منبع:

medium.com/bugbountywriteup/reflected-xss-in-facebooks-mirror-websites-4384b4eb3e11

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید