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

19 ژانویه 2023

سلام دوستان. امروز میخوام رایت اپ رسیدن به۳ تا آسیپ‌پذیری که چند روز پیش رو یه سامانه پیدا کردم رو براتون بنویسم.

ریکان:

معمولا من برای شروع روی پروگرم‌های واید اسکوپ اولین کاری که می کنم پیدا کردن ASN و CIDR های کمپانی هستش که از طریق اون‌ها به آی‌پی‌های متعلق به کمپانی برسم. دسترسی داشتن به آی‌پی‌های کمپانی تو مراحل بعدی هانت می تونه خیلی کمک کار باشه. برای مثال وقتی به یک وبسایت می رسیم که از CDN استفاده می کنه اینجا می تونیم از این ای پی‌ها برای پیدا کردن Origin IP وبسایت استفاده کنیم، یا اینکه رکورد ptr هر آی‌پی رو بگیرم و اگه فعال باشه به دامین هایی که روی آی‌پی سرویس میدن دسترسی پیدا کنیم. (تقریبا ریورس A رکورد میشه.) یا می‌تونیم پورت اسکن انجام بدیم و روی همون آی‌پی کار کنیم ولی خب باید اینجا یه وریفای انجام بدیم که سرویس روی ای پی متعلق به خوده کمپانی باشه،‌ تو این مرحله در ارتباط بودن با تیم امنیت پروگرم می تونه مفید باشه.

خب من تو مرحله اول با سرچ اسم کمپانی داخل سایت https://bgpview.io ای‌اس‌ان‌های که متعلق به کمپانی بود برام لیست شد. مرحله بعد پیدا کردن ای پی های لایو داخل ASN بود که اینجا میشه به صورت دستی‌ با این پایپ‌لاین این کارو انجام بدیم:

whois -h whois.radb.net -- '-i origin AS123' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq | mapcidr -silent | httpx

این دستور مرحله اول whois اون ASN رو می گیره و با دستور grep سی‌ای‌دی‌ار‌ها رو از خروجی Whois بیرون می‌کشه و بعد یونیک کردن اون رو به تولز mapcidr برای مپ کردن پاس میده و به IP تبدیل می‌کنه و مرحله آخر پایپ‌لاین با httpx سرویس دیسکاوری رو انجام میده. تو مرحله آخر می تونیم برا httpx هم پورت مشخص کنیم.

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

asn:AS123

تقریبا همین فلو رو برامون انجام میده ولی خب روش بالا خیلی کامل تره چون ممکنه یه سرویس رو یه ای پی تازه لایو شده باشه و هنوز شودان بهش درخواست نزده باشه و پیداش نکرده باشه. (سرچ ASN شودان برای اکانت ها Free در دسترس نیست و باید اکانت ممبرشیپ داشته باشید.)

خب من اینجا از شودان کمک گرفتم و حدود ۲۰۰ تا ای پی رو برام پیدا کرد و بین اونا یه صفحه که شبیه به پنل ادمین بود رو برای هانت انتخاب کردم.

شروع داستان:

خب تارگتی که انتخاب کردم یه صفحه لاگین ادمین بود که بعد از چک کردن Wappalyzer دیدم که با PHP نوشته شده

اولین چیزی که به ذهنم رسید برای تست SQLi تو صفحه لاگین بود ولی خب به نتیجه ایی نرسیدم.

توی مرحله بعد، از اونجا که تارگتمون داکیومنت روت داشت با ابزار FFUF شروع کردم به پیدا کردن دایرکتوری و فایل.

بعد از چند دقیقه روی این مسیر ریسپانس کد ۴۰۱ گرفتم:

http://target.com/Config/

داخل مرورگر به این پیج درخواست زدم و تو صفحه لاگین admin:admin‌ رو تست کردم و boom 🙂

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

بعد از اینکه دوباره سرورم رو چک کردم دیدم که چند تا فولدر دیگه مثه js, css, images, data پیدا شده ولی چیز جالبی داخلشون نبود تا اینکه رسیدم به images که فایل images.rar نظرمو جلب کرد.

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

احتمالا همتون اون changelogo.php رو دیدین دیگه؟ اولین کار بهش درخواست زدم و کل ریسپانس اومد ولی داخل Render برپ چک کردم که صفحه رو ببینم دیدم که صفحه لود نشده.

داخل مرورگر که تست کردم دیدم که دارم به index.php‌ ریدایرکت می شم.

شاید براتون سوال شه چرا تو تو برپ ریدایرکت نشدم!؟

جوابش اینه که اینجا یه کد جی اس داره کاربر رو ریدایرکت می کنه و چون داخل برپ جی اس پارس نمیشه ریدایرکتی هم صورت نمیگیره و برنامه نویس اومده سمت کلاینت از دسترسی یوزر عادی جلوگیری کرده با این کارش :))

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

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

اینجا ما Response Manipulation داریم که اینجا یه استاپ ریز زدم و رفتم اینو روی کل سایت تست کردم و دیدم پنل ادمین رو هم برنامه نویس با همین روش پروتکت کرده و تونستم با حذف کردم اون قسمت از کد به پنل ادمین بدون هیچ احراز هویتی دسترسی پیدا کنم.

تا اینجا یه گزارش High و Critical رو داریم و بریم برا بخش آخر رایت اپ 🙂

بعد ریسپانس منی‌پیولیشن همیچین صفحه ایی لود میشد

که اینجا رفتم سورس سایت رو چک کردم به این قطعه کد جالب جی اس رسیدم :)‌

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

مرحله بعد اومدم یه فایل گیف رو که اجازه داده شده بود برای اپلود تستی اپلود کردم که ببینم سرور چه رفتاری رو نشون میده، که در نهایت دیدم که فایلمو داخل فولدر images بدون اینکه اصلا دسترسی درخواست کنه آپلود کرده.

خب وقت شل اپلوده نه؟

ولی خب نه :(‌

اینجارو کلی تست کردم ولی جز .png,.gif فایل دیگه ایی نتونستم آپلود کنم و کلی اینجا به هم ریختم که چرا نشد و باید حتمن میشد:)

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

آخرای چک لیست فایل آپلودم یه تست دیگه که اتفاقا چن روز قبلش از رو یه رایت آپ خونده بودم رو با تایتل Chaining دیدم با نا امیدی کامل رفتم باز کردم

یه سری پیلود XSS, SQLi,RCE,SSTI بودن که داخل filename به این صورت قرار می گرفتن رو دیدم:

filename="PAYLOADS.ext"

چون وب سرور فایل‌هارو لیست کرده بود از XSS‌ گذشتم و تمپلیت اینجینی هم این وسط نبود پس SSTI هم ایگنور شد

چون php بود و کلا توی وب سایت های php معمولا SQL Injection می‌خوره با SQLi شروع کردم ولی خب نتیجه‌ایی نداد

دیگه با ناامیدی خیلی بیشتر‌ پیلود های RCE رو تست کردم و boom! 🙂

نتیجه اش این پیلود باعث شد سرور ۳۰ ثانیه به خواب بره و اینم از RCE .

filename="test||sleep 30 ||.gif"

تو مرحله ای آخر داخل کل ای‌پی‌هایی که تو مرحله ریکان پیدا کردم تایتل این پنل رو سرچ زدم و توی همین ای‌پی رنج یه پنل دیگه دقیقا با همین مشخصات پیدا کردم و اون هم همین آسیب‌پذیری هارو داشت :)‌

گزارش :

تاریخ گزارش : ۱۴۰۱/۱۰/۲۸
تاریخ تریاژ :‌ ۱۴۰۱/۱۰/۲۸

بعد از این گزارش ها مجموع بانتی هام ۳۴۵۰ دلار شد و چند تا اچیومنت رو داخل Voorivex Academy رو هم تونستم بگیرم.

امیدوارم مفید واقع شده باشه.

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

    عالی ایول 👌

  2. Yoosof گفت:

    عالی
    باریکلا
    واقعا لذت بردم

  3. Sanoo گفت:

    گزارش ساده و هوشمندانه بدون ذره ای تفاخر علمی که در متن گزارش تو ذوق آدم بزنه.همیشه رو به پیشرفت باشید👏🏾

  4. Walkman23 گفت:

    عالی بود واقعا
    ماشالله

  5. matitanium گفت:

    👍❤ awesome

  6. aminsec گفت:

    Art of work🔥👏

  7. H گفت:

    Thanks so much. boom 🙂

  8. mr.vcoder گفت:

    عالییی بود ❤️👌

  9. hamid گفت:

    عالی بود

  10. alpha گفت:

    سلام
    خیلی قشنگ توضیح دادید
    بانتی مبارک باشه
    چند سوال داشتم ممنون میشم پاسخ بدید

    ۱) شما فقط بر روی ip موفق شدید که سایت رو مشاهده کنید؟
    در این صورت اگه inscope به صورت ((*.domain.com)) باشه گزارش رو قبول می کنند؟
    الان برای شما قبول کردند و مثلا نگفتند که ip مورد قبول نیست و فقط باید دامنه باشه؟

    ۲) در یه قسمت اشاره کردید که XSS رو صرف نظر کردید چون لیست میشد. منظور چی هستش؟

    ۳) لینک رایتاپ اصلی مربوط به payload های به کار رفته در filename رو میشه در همین کامنت یا خود مقاله ارسال کنید؟

    ۴) برای RCE به غیر از sleep موارد دیگه همگی کار می کردند و دسترسی کامل بود به سرور؟
    دلیل اینکه از || استفاده شد چی بود؟ و از نظر فنی چه اتفاقی افتاد که سرور کلمه sleep به کار رفته در نام فایل رو به صورت یک فرمان سمت سرور اجرا کرد؟

    ۵) یک مورد جالب در گزارش شما این بود که برای شما خیلی زود در همون روز تریاژ شد (طبق تاریخی که در مقاله نوشته شده) و هم اینکه گزارشهای مشابه بعدی که برای یه ip دیگه ای هم بود dup نشد.
    من قبلا گزارشی داشتم بر روی یه ساب دامنه ولی dup شد چون عین همون رو یه نفر دیگه قبلا بر روی ساب دامنه دیگه ای گزارش کرده بود.
    یعنی نام ساب دامنه ها فرق داشت اما آسیب پذیری عینا یکسان بود و تفاوتی نداشت. برای همین برای من dup شد.
    اینها به چه چیزی بستگی داره که برای من dup اعلام شد ولی برای شما نه؟
    میشه راهنمایی کنید تا همون گزارش رو بتونم دوباره ارسال کنم تا شاید قبول بشه این بار؟

    مرسی

    • omidxrz گفت:

      ممنونم لطف دارین.
      ۱- اره. policy برنامه به این صورت بود که ای پی هایی که مرتبط بودن با دامین ها هم داخل اسکوپ بودن.
      ۲. چون کانفیگ وب سرور برای اون فولدر به این صورت بود که فقط فایل serve بشه.
      ۳. اون رو ندارم حقیقتش ولی از این میتونی ایده بگیری
      https://book.hacktricks.xyz/pentesting-web/file-upload
      ۴. تقریبا اره به جز out of band‌چون شبکه ایزوله بود.
      و اینکه نمیدونم کد اون پشت چی بود ولی احساسم اینه که تو یه کامند bash اسم فایل و سایزش تغییر میکرد.
      و ||‌برای جدا سازی کامندی که داره اجرا میشه و پیلودمونه .
      اینو یه نگاه بنداز
      https://unix.stackexchange.com/questions/190543/what-does-mean-in-bash
      ۵. خواستن حال بدن گفتن که این ریپورت رو ۲ تا حساب میکنیم ولی ریپورت های بعدی یکی حساب میشه:‌)

  11. amirkh گفت:

    خیلی خوب و قشنگ بود.

  12. میعاد گفت:

    عالی بود👏🏻👏🏻👏🏻

دیدگاه شما در مورد hamid