کشف آسیب پذیری subdomain takeover در وب سایت Fastly و دریافت پاداش 2000 دلاری

کشف آسیب پذیری subdomain takeover در وب سایت Fastly و دریافت پاداش 2000 دلاری

هدف رایت آپ:

امروز قرار است برایتان در مورد این صحبت کنم که چگونه توانستم در پلتفرم Fastly آسیب پذیری subdomain takeover پیدا کرده و اولین بانتی چهار رقمی خود را دریافت نمایم. بیایید شروع کنیم.

پیشینه:

همه چیز روز یک شنبه، دوم اکتبر سال 2022 شروع شد. همانند سایر روزها، ساعت 6 صبح بیدار شدم، کار روتین هر روز خود را انجام دادم، موجودی داده تلفن همراهم را چک کردم (که 1.3 گیگ از آن باقیمانده بود)، هات اسپات گوشی را فعال کرده، لپ تاپم را به آن متصلم کردم و هانتیگ را روی یک برنامه خصوصی از سر گرفتم. چندین ساعت بر روی اپلیکیشن هدف زمان گذاشتم، ولی هنگامی که موفق به پیدا کردن هیچ گونه آسیب پذیری در آن نشدم، تصمیم گرفتم استراحت کوتاهی داشته باشم. من عادت داشتم حداقل هر شش ماه یک بار از برنامه های خصوصی قدیمی خود بازدید مجددی داشته باشم. از این رو، دعوت نامه هایی را که از برنامه های خصوصی گرفته بودم مرور کرده، یکی از برنامه های قدیمی را انتخاب و روی این برنامه شمارش زیردامنه را آغاز کردم (در این رایت آپ از برنامه هدف با عنوان redacted.com یاد خواهیم کرد).

آسیب پذیری تصاحب زیردامنه:

آسیب پذیری subdomain takeover هنگامی رخ می دهد که مهاجم موفق به تحت کنترل قرار دادن زیردامنه  از یک دامنه می‌شود. این مشکل اغلب به علت اشتباهات و عدم پیکربندی صحیح DNS اتفاق می افتد.

عملیات شمارش زیردامنه:

من عملیات شمارش زیردامنه خود را با استفاده از ابزاری نظیر گوگل دورک، OWASP Amass و Gobuster آغاز کردم:

شمارش زیردامنه پسیو با استفاده از گوگل دورک:

site:*.redacted.com -www -www1 -blog
site:*.*.redacted.com -product

Subdomain enumeration پسیو با استفاده از OWASP Amass:

amass enum -passive -d redacted.com -config config.ini -o amass_passive_subs.txt

بروت فورس زیردامنه  با استفاده از Gobuster:

gobuster dns -d redacted.com -w wordlist.txt - show-cname - no-color -o gobuster_subs.txt




پس از پیمایش زیردامنه ها، ورودی های تکراری را حذف کرده
 و نتایج نهایی را با استفاده از ابزار Anew داخل فایلی تحت عنوان subdomains.txt ادغام کردم.




# ادغام زیردامنه ها داخل یک فایل:

cat google_subs.txt amass_passive_subs.txt gobuster_subs.txt | anew subdomains.txt




در ادامه فایل subdomains.txt را به اسکریپت شل
 cname.sh خود دادم، رکوردهای CNAME را پیمایش کرده و خروجی را در فایل cnames.txt ذخیره کردم:




# پیمایش رکوردهای CNAME

./cname.sh -l subdomains.txt -o cnames.txt

# می توان از ابزار HTTPX نیز برای این کار استفاده کرد:

httpx -l subdomains.txt -cname cnames.txt




سپس فایل subdomains.txt را به ابزار HTTPX دادم، وب سایت های زنده را جستجو و پیدا کرده و نتیجه را در فایل servers_details.txt ذخیره نمودم.


# جستجو برای سرورهای HTTP/HTTPS زنده

httpx -l subdomains.txt -p 80,443,8080,3000 -status-code -title -o servers_details.txt


تحلیل:

در ادامه شروع به تحلیل فایل cnames.txt نموده و ساب دامینی پیدا کردم که به دو رکورد CNAME متفاوت اشاره داشت. کامند dig را روی ساب دامین اجرا نموده و تصویر زیر را به عنوان خروجی دریافت کردم:

dig next.redacted.com CNAME

کوئری DNS برای رکورد CNAME

این زیردامنه دو رکورد CNAME داشت. اولین رکورد CNAME به دامین webflow.io و دومین رکورد CNAME به دامنه Fastly.net (سرویس Fastly) اشاره می کرد. هنگامی که چندین رکورد CNAME داشته باشیم، اولین رکورد ،CNAME ما را به رکورد CNAME بعدی هدایت (ریدایرکت) خواهد کرد و… این تغییر مسیر (Redirection)  تا زمانی که به آخرین رکورد CNAME برسیم ادامه خواهد داشت.

در ادامه فایل servers_details.txt را با هدف پیدا کردن چیزهای جالب جستجو کرده و موفق به یافتن خط زیر شدم. به کد وضعیت و عنوان وب سایت توجه نمایید:

https://next.redacted.com [500] [246] [Fastly error: unknown domain next.redacted.com]

همانطور که مشاهده می کنید، کد وضعیت “500” و عنوان نمایش داده شده به صورت “Fastly error: unknown domain next.redacted.com” است. با نگاه به رکورد CNAME (“redacted.fastly.net”) و اثر انگشت وب سایت (“Fastly error: unknown domain”) می توان نتیجه گرفت که این subdomain takeover مربوط به Fastly است. اگر این اثر انگشت در وب سایتی مشاهده شد، احتمال وجود آسیب پذیری در آن وب سایت وجود دارد. هر چند که من چندین مرتبه دیگر نیز با این اثر انگشت مواجه شده بودم ولی وب سایت موردنظر آسیب پذیر نبود. در چنین وضعیتی وب سایت مربوطه تنها تحت شرایط خاصی آسیب پذیر خواهد بود.

در بسیاری از موارد، قادر به انجام عملیات takeover روی سرویس Fastly نخواهیم شد. به عنوان نمونه مورد زیر:

دامنه ها پاداش هانتینگ

اما در صورتی که دامنه موردنظر قبلاً توسط مشتری دیگری ثبت نشده باشد، می توانیم این دامنه را ثبت کرده و به طور کامل زیردامنه مربوطه را takeover نماییم.

تایید وجود آسیب پذیری:

من به وب سایت Fastly رفته و مراحل زیر را انجام دادم:

  • با استفاده از یک ایمیل موقت، یک حساب کاربری در وب سایت com ایجاد کردم.
  • وارد داشبورد Fastly خود شده و روی گزینه Create a Delivery Service کلیک کردم.
  • نام زیردامنه هدف (redacted.com) را وارد نموده و بر روی گزینۀ Add کلیک کردم.

انتظار داشتم پیغام خطایی مبنی بر ثبت دامنه توسط مشتری دیگر (domain is already taken by another customer) در صفحه ظاهر شود، اما چنین پیغام خطایی دریافت نکرده و در کمال تعجب به صفحه بعدی یعنی “Hosts page” هدایت شدم.

دامنه مدنظر در Fastly

مراحل ایجاد POC:

پس از تایید وجود آسیب پذیری، وارد سرور VPS خود شده و یک دایرکتوری تحت عنوان “hosting” ایجاد نمودم. سپس داخل دایرکتوری “hosting” یک فایل HTML ساده تحت عنوان “index.html” ساختم.

mkdir hosting

cd hosting

nano index.html

فایل “index.html” حاوی کد زیر است:

<!DOCTYPE html>

<html>
    <head><title>STO PoC</title></head>
    <body>
        <h1>ValluvarSploit PoC</h1>
    </body>
</html>

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

python3 -m http.server 80

سپس وارد داشبورد Fastly شده و آدرس IP عمومی سرور VPS خود را در بخش “Hosts page” وارد کردم:

پیکربندی VPS

پس از چند ثانیه، یک پنجره جدید در مرورگر باز کرده و از صفحۀ http://next.redacted.com/index.html بازدید کردم. فایل POC من با موفقیت رندر شد. در نتیجه گزارشی دقیق تهیه کرده و آن را در HackerOne ثبت کردم.

تایید مطلب

یادگیری از طریق نظارت بر لاگ های سرور:

من به مدت سه روز سرویس Fastly خود را در حال اجرا نگه‌داشته و لاگ های سرور را به منظور یافتن اطلاعات حساس تحت نظر قرار دادم. مشاهدۀ روش باگ هانترهای دیگر از این طریق واقعاً جالب بود.

پاداش هانتینگ

پاداش:

گزارش من با درجۀ آسیب پذیری High تریاژ شد و در عرض 10 روز، 2000 دلار به عنوان پاداش دریافت کردم.

پاداش تصاحب زیردامنه

نکات کلیدی:

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

بابت زمانی که برای مطالعه این رایت آپ صرف کردید، از شما متشکرم.

 

منبع

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *