سلام دوستان، در این پست میخوام دو تا از آسیب پذیریهایی که چند روز پیش در باگبانتی برنامه خارجی کشف کردم رو با شما به اشتراک بگذارم. بدلیل اینکه از تیم امنیت اجازه انتشار نگرفتم اسم برنامه رو Vulnerable درنظر میگیرم.
در بخش اول به آسیبپذیری XSS میپردازیم، اینکه چگونه شدت آسیبپذیری XSS رو بالا ببریم و چطور جلوتر به آسیبپذیری دیگر یعنی IDOR به ما کمک میکنه.
مورد اول)
طبق فلو بصورت چشمی درحال بررسی کردن فیچرهای وب سرویس و تاریخچه بِرپ بودم و دنبال درخواست حساسی که پارامتر یا مورد مشکوکی داشته باشه بودم ولی مورد خاصی تو نگاه اولیه دیده نشد.
پس از اول فلو سایت رو زیر نظر گرفتم و تک تک درخواستها رو توی Repeater برپ بردم برای عمیقتر کار کردن. اینجا بود که با یک درخواست روبهرو شدم، بعد از ساخت حساب کاربری این درخواست اجرا میشد و قبل از رفتن به صفحه خوش آمدید و پروفایل، برای چند ثانیه به یک صفحه منتقل میشدم.
بسیار خب. عددی که توی URL هست رو میشه توی صفحه دید، در این شرایط فورا ذهن به سمت XSS میره.
بنابراین عدد رو تغییر دادم به ترکیبی از عدد و حروف و علامتها که ببینم فقط عدد قبول میشه یا نه.
عالی! مقدار وارد شده با علامتها توی UI نشست بدون خطا، بریم برای پیلود XSS که الرت قشنگه بیاد.
Boom XSS!
خب ولی زیاد هم نباید خوشحالی کرد چون کوکیها فلگ HttpOnly دارن و ایمپکت زیادی نداره. ولی قبل ریپورت کردن باگ فلو سایت رو عمیق تر چک میکنم تا بتونم ایمپکت رو بالا ببرم.
بعد از بررسی صفحات JS. سایت و بخش اسکریپت صفحه فعلی با قطعه کدی مواجه شدم که شناسه کاربر و نام و نام خانوادگی رو نگهداری میکنه.
بسیار خب، این میتونه یک آیتم خوب باشه. با خوندن محتوای داخل DOM صفحنه بهعنوان مثال میتوان با ارسال چنین پیلودی به ایمیل، نام و نام خانوادگی کاربر دست یافت.
http://window.insider_object.user.email
در رابطه با شناسه هایلایت شده باید مسیرها و درخواستهارو کامل چک کنم تا ببینم کجا از این شناسه استفاده میشه.
مورد دوم)
بعد از چند ساعت چک کردن با end-pointها به یه درخواست رسیدم که برای تغییر قسمتی از اطلاعات حساب کاربر، از userId استفاده میشه. خب حالا که شناسه کاربر توی درخواست هست باید برم برای تست سناریو IDOR.
حساب جدید رو ساختم و بصورت سناریو واقعی با XSS شناسه کاربری اون حساب رو برداشتم و IDOR انجام شد و بخشی از اطلاعات حساب جدید تغییر کرد!
نکتههایی که از این دو آسیبپذیری یاد میگیریم:
- برای پیدا کردن XSS نیاز نیست حتما پارامتر وجود داشته باشه، ممکنه مقدار URI در صفحه بازتاب بشه.
- درصورت مواجه شدن با آسیبپذیری XSS سعی کنید شدت آسیبپذیری رو بالا ببرید و تنها به Alert اکتفا نکنید. (محتوای DOM صفحه ای که به XSS آسیبپذیره حتما چک کنید بعضی وقتا اطلاعات مفیدی یافت میشه)
- اگر با شناسه ای رو به رو شدید پشت سر نزارید، ذخیره کنید چون ممکنه بعدا بکارتون بیاد برای آسیبپذیریهایی از جمله IDOR.
امیدوارم از این پست لذت برده باشید.
منو میتونید در توییتر و اینستاگرام دنبال کنید.
عالی بود ، مرسی . فقط میشه در مورد پیلودت و نحوه پیدا کردنش بیشتر توضیح بدی ممنون
رایت آپ باحالی بود سپهر جان و جمع بندی آخرش کار و جمع کرده بود ایول !