نگاره‌هایی پیرامون امنیت، شبکه و رمزنگاری

19 آوریل 2023

سلام به همگی، من مبین‌ام یا همون ZeroXUF.

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

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

اول از همه خسته نباشید میگم به همه کسایی که داخل ایونت شرکت کرده بودن و امیدوارم ایونت و رقابت خوبی برای همه بوده باشه.

خب دیگه آشنایی بسه بریم سراغ آسیب پذیری پیدا شده روی سامانه notsafe.shop .

اسکوپی که ما اجازه داریم تست های امنیتی رو روش پیاده کنیم طبق گفته برنامه *.notsafe.shop هستش و بر این اساس ما می‌تونیم subdomain discovery رو انجام بدیم تا به یک لیست خوب از ساب‌دامنه ها برسیم.

من یک اسکریپت از قبل آماده کردم که هم به‌صورت passive و هم به‌صورت active یک لیست از ساب‌دامنه های تارگت به ما می‌ده.

خب من بعد از پیدا کردن ساب‌دامنه ها یک httpx ازشون گرفتم تا ببینم کدوم‌یکی از تارگت‌ها http دارن و یک‌سری مقادیر دیگه مثل:‌ status_code, technologies, … رو چک کنم.

طبق عادتی که دارم اول می‌رم سایت‌هایی که به ما ارور 403 رو بر می‌گردونند تا ببینم که چه چیز‌هایی داخلشه و یک‌سری تست امنیتی رو انجام میدم.

بنابراین به سراغ employee.notsafe.shop رفتم و به یک صفحه رسیدم که به ما 403 میداد اول از همه سعی کردم فاز کنم و توی فاز کردنم به یک چیز عجیب خوردم گویا ما یک Path Base Xss داریم ( اینجا این آسیب‌پذیری رو قرار نیست بگم چون طبق تایتل گفته شده قراره XXE رو توضیح بدم ).

یک نکته جالب دیگه که بهش برخوردم این بود که این وب‌سایت داشت از CSP(Content Security Policy) استفاده می‌کرد و داخل ریسپانس‌هدر CSP میتونستیم ۲ وب‌سایت رو ببینم که مجاز بودیم سورس خارجی ازشون اضافه کنیم:

خب من اینجا یک ساب‌دامنه جدید پیدا کردم که در subdomain discovery به این نرسیده بودم، سریع آدرس ساب‌دامنه ای که پیدا شد رو داخل مرورگر باز کردم و به یک ارور 404 خوردم، اولین چیزی که به ذهنم رسید این بود که فاز کنم.

فاز رو انجام دادم اما به نتیجه‌ی جالبی نرسیدم فقط دایرکتوری uploads/ رو پیدا کردم که اون هم ارور 403 می‌داد و نتونستم بایپسی رو انجام بدم.

خلاصه بعد از کلی فاز تصمیم گرفتم کلا فاز رو بزارم کنار و دقیق تر همه چیو بررسی کنم، یک چیز عجیبی که توجه من رو به خودش جلب کرد این بود که ما وقتی درخواست رو ارسال میکردیم داخل ریسپانس‌هدر ها ۲ تا هدر جالب داشتیم:

این ۲ تا هدر رو توی گوگل و چند تا سرچ انجین دیگه سرچ کردم که درموردشون بخونم به چیزای جالبی نرسیدم همچنین از chatgpt ام سوال کردم اما جواب خاصی نگرفتم.

تصمیم گرفتم هدر هارو توی گیتهاب سرچ کنم که شاید به نکته‌ای رسیدم که منو به جواب نزدیک تر کنه.

از هدر اولی جوابی نگرفتم اما هدر دوم رو که سرچ کردم به یک ریپازیتوری رسیدم که گویا دولوپر همین برنامه‌ی notsafe اون رو ساخته بود و یادش رفته بود private کنه ریپازیتوری رو.

حالا یکم بازی جذابتر شد.

بعد از خوندن سورسش متوجه شدم که با زبان برنامه نویسی php نوشته شده و به یک سری endpoint ها ام رسیدم.

بعد از ارسال درخواست http به endpoint هایی که پیدا کرده بودم با ارور 403 مواجه شدم دوباره برگشتم سورس کد رو خوندم و دیدم که بله این پنل ادمینه و نیاز به access token داریم برای ارسال درخواست.

هرچقدر سورس کد رو گشتم هیچ توکنی پیدا نکردم تقریبا نا امید شده بودم که شاید این رد گم کنی بوده باشه رفتم یک مقدار استراحت کردم و به خودم فرصت فکر کردن دادم که یهو به ذهنم رسید کامیت‌های گیت رو چک نکردم بعد از چک کردن کامیت‌ها متوجه یک کامیت fix شدم که اگه بازش می‌کردیم با یک فایل به‌نام db.sql روبرو میشدیم:

خب خب اینجا یک سری ایمیل از ادمین پیدا کردم که به دردم نمی‌خورد، اسکرول کردم پایین تر و یک کوئری insert پیدا کردم که داشت توکن هارو داخل دیتابیس insert می‌کرد:

خب حالا من توکن‌های احراز‌هویت شده رو داشتم با توجه به فایل config.php و شرط تعریف شده برای احراز‌هویت ما باید توکن رو داخل یک هدر به اسم X-Auth قرار می‌دادیم.

هیچ‌کدوم از توکن‌ها به غیر از مورد ۷ احراز‌هویت نشده بود و با توکن شماره ۷ ما می‌تونستیم به عنوان مدیر درخواست ارسال کنیم و جواب بگیریم:

من همین گزارش رو ارسال کردم و تریاژ شد اما متاسفانه با توجه به cvss ای که به من دادن این high محسوب میشد خب من راضی نشدم به high و شروع کردم به گشتن بیشتر که شاید آسیب پذیری داخل سورس‌کد پیدا کنم.

بعد از خوندن سورس‌کد index.php به یک endpoint آسیب‌پذیر به xxe رسیدم که با توجه به کدی که نوشته شده بود هیچ فیلتری روی ورودی کاربر اعمال نمی‌شد.

من یک ورودی XML دادم بهش و در جواب به من status: 200 رو برگردوند که به این معنی بود ورودی من با موفقیت پارس شده و داخل دیتابیس insert شده:

خب دیگه تقریبا ۹۰ درصد راه رو رفته بودم و یک پیلود ساده‌ی xxe وارد کردم که باهاش بتونم /etc/hosts رو بخونم.

پیلود من:

<?xml version="1.0"?><!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/hosts"> ]>
<task>
<task_name>&xxe;</task_name>
<task_deadline>Mobin is here</task_deadline>
<task_authors>Admin panel Pwned</task_authors></task>

که در جواب دوباره status: 200 رو به من برگردوند و اطلاعات داخل فایل /etc/hosts رو در خروجی به من برگردوند:

گزارش رو ارسال کردم و شدت آسیب پذیری critical رو گرفتم.

امیدوارم رایتاپ خوبی بوده باشه براتون.

فیلمشم در ادامه براتون قرار می‌دم که بیشتر متوجه آسیب پذیری شده باشید:

شکار خوبی داشته باشید.

2 پست نوشته شده
یک برنامه نویس پایتون و عاشق امنیت هستم که نمیتونم اینستاگرام و یا گوشی کسیو براتون هک کنم :)
  • به اشتراک بگذارید:
  1. محمد گفت:

    یه ریکان خفن
    منتظر باگ های بیشتر و رایتاپ های خفن تر ازت هستیم
    موفق باشی

  2. امید گفت:

    آفرین مبین خیلی عالی بود . ایشالا پر قدرت همینطوری ادامه میدی

  3. Zohi گفت:

    خیلی عالی بود موفق باشی🔥👏🏻

  4. m0r7324 گفت:

    اون اسکریپت که هم به‌صورت passive و هم به‌صورت active یک لیست از ساب‌دامنه های تارگت میده
    رو هم میزاری استفاده کنیم ممنون میشم

  5. سعید روشن گفت:

    عالی داداش موفق باشی 🤩

  6. حسین گفت:

    خیلی خوب بود. دمت گرم.

  7. Araxeem گفت:

    🤘🏻❤️

  8. hamnal گفت:

    Awesome
    That was great
    Thanks for your ditails and final video for better understanding
    The best wishes for you
    Good luck

  9. Oji گفت:

    دمت گرم
    عالی بود

  10. reader گفت:

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

  11. میعاد گفت:

    احسنت 👏🏻👏🏻👏🏻