در این Write up مربوط به آسیب پذیری منطقی، که توسط Manav Bankatwala تهیه شده است به چهار آسیب پذیری شناسایی شده در یک برنامه باگی بانتی پرداخته میشود.
من Manav Bankatwala یک محقق امنیتی هستم.
در حالی که از عنوان، حتما حدس زده اید که این نوشته در مورد این است که چگونه من 4 اشکال منطق تجاری را در یک برنامه با مجموع پاداش 2300 دلار پیدا کردم که منجر به قدردانی واقعاً خوب از شرکت شد:
Summary
این برنامه هدف، شرکتی است که خدمات مرورگر را ارائه میدهد که در آن ما به راحتی میتوانیم از امکانات Web Scraping و ورود به سیستم با چندین حساب در آن واحد استفاده کنیم. این بسیار شبیه حالت ناشناس است که ما در مرورگرها استفاده میکنیم. اما این حالت، 100 مرورگر ناشناس را به طور همزمان و بدون هیچ گونه عارضهای برای ما فراهم میکند.
این برنامه فقط برنامههای قیمت گذاری شده برای استفاده دارد. بیایید بگوییم که یک طرح انفرادی حدود 80 دلار و یک طرح تیمی تا 3 کاربر حدود 170 دلار هزینه دارد. با افزودن کاربران بیشتر و بیشتر، قیمت طرح افزایش مییابد. هزینه کاربر اضافی برای هر کاربر 32 دلار بود. بدون حتی یک برنامه اولیه نمیتوانید به 90٪ از ویژگیهای برنامه دسترسی داشته باشید. بنابراین در اینجا، من 4 آسیبپذیری Business Logic یا منطق کسبوکار را پیدا کردم که مستقیماً بر امور مالی کسبوکار تأثیر میگذارد و باعث ضرر عمده میشود. بیایید با اولی شروع کنیم:
First Vulnerability : Business Logic in inviting additional members
در یک طرح تیمی، ما فقط میتوانیم حداکثر 3 عضو را دعوت کنیم و در ادامه نیز هزینه اضافه شدن هر عضو 32 دلار بود.
من قبلاً 3 عضو اضافه کردهام و اکنون نمیتوانم عضو دیگری را اضافه کنم. اول باید عضوی را حذف نموده و بعد فرد دیگر را دعوت کنم. اما اینجا یک اشتباه بزرگ وجود داشت. بگذارید ابتدا جریان عادی را به شما بگویم.
- تمام مشخصات عضو را وارد کرده و بر روی ارسال دعوت نامه کلیک کنید.
- عضو یک لینک پذیرش دعوت دریافت میکند و پس از کلیک کردن فقط روی آن لینک، کاربر اضافه میشود.
- عضو از لینک استفاده کرد و به تیم اضافه شد. به این ترتیب میتوانیم تا 3 عضو اضافه کنیم.
اما در اینجا پیکربندی نادرست این بود که تا زمانی که کاربر دعوت را نپذیرد، تعداد اعضا افزایش نمییابد. یعنی میتوانیم ابتدا لینک دعوت را برای 10 عضو ارسال کنیم و سپس همه را بپذیریم. اجازه دهید این را به چند مرحله برای شما تقسیم کنم:
Exploit steps
- مشخصات عضو را وارد کنید و لینک دعوت را ارسال کنید.
- از لینک استفاده نکنید و دوباره عضو دیگری اضافه کنید.
- این روند را تا تعداد کاربرانی که میخواهید اضافه کنید تکرار کنید.
هنوز تعداد اعضا در برنامه صفر است زیرا هنوز کسی دعوت را نپذیرفته است.
اکنون، تمام لینکهای دعوت نامه ارسال شده را یک به یک مشاهده کنید. همه اعضا بدون هیچ هزینهای اضافه خواهند شد. به این ترتیب من بیش از 6 کاربر را دعوت کردم و 200 دلار صرفه جویی کردم.
با این روش در حال حاضر حتی میتوانم 100 عضو را به طور همزمان اضافه کنم که منجر به ضرر 320 دلاری شرکت میشود. آنها بلافاصله این آسیبپذیری را بررسی و برطرف کردند.
Reward : 500USD
Second Vulnerability : No Plan user can invite members
باز هم در اینجا، کاربر بدون Plan نمیتواند به ویژگی دعوت از سایر اعضا به تیم دسترسی داشته باشد. اما به دلیل وجود یک پیکربندی نادرست امنیتی، میتوانیم مستقیماً فراخوانی API دعوت کاربر را بدون توکن جلسه کاربر برنامه ارسال کنیم. بنابراین مراحلی که من انجام دادم به شرح زیر است:
- درخواست POST که مسئول دعوت کاربر جدید است را ضبط کنید و این درخواست را به Repeater ارسال کنید.
- توکن مجوز را به توکن کاربری بدون Plan تغییر دهید. همچنین باید پارامتر Workspace ID را نیز تغییر داد.
- درخواست ارسال و با موفقیت انجام شد. به جای نشان دادن خطای ممنوعه، کاربر دعوت شد.
Reward: 500USD
Third Vulnerability : Race condition in creating browser profiles
در اینجا، در برنامه ما فقط تعداد خاصی از پروفایلهای مرورگر را برای ایجاد اختصاص دادهایم. به عنوان مثال، ما فقط میتوانیم 300 پروفایل مرورگر را با یک طرح انفرادی ایجاد کنیم. این مورد برای من جالب به نظر میرسید که بتوانیم بیش از 300 پروفایل با دسترسی محدود به پلان ایجاد کنم. مراحل به شرح زیر است:
من ابتدا 298 پروفایل ایجاد کردم.
سپس دوباره بر روی ایجاد پروفایل جدید کلیک کردم و درخواست را در Burp ارسال کردم.
این درخواست را به افزونه Turbo Intruder ارسال کردم. البته شما میتوانید از اسکریپت پایتون خود استفاده کنید. یک موقعیت تصادفی به عنوان موقعیت Payload اضافه نموده و Thread را افزایش دهید.
همانطور که حمله به پایان رسید. تعداد کل پروفایلهای مرورگر 306 بود. این نشان دهنده یک بهره برداری موفق از Race Condition است.
Reward : 500USD
Fourth Vulnerability: Low Privilege users can view data of workspace through API
در برنامه زمانی که کاربر را دعوت میکنیم، ما گزینهایی برای انتخاب از 3 نقش داریم. یعنی User، Launcher و Manager. نقش «User» نمیتواند برخی از جزئیات مانند اعضا در Workspace، نقشهای آنها، اعضای دعوتشده، موجودی و برنامهای که در آن قرار دارند را ببیند. اما اگر همان جزئیاتی را که با استفاده از API با کوکیهای نقش «User» درخواست کنیم، میتوانیم آن جزئیات را نیز دریافت کنیم. مراحل دقیق اکسپلویت به صورت زیر است:
- ابتدا عضوی را با مجوز نقش «User» دعوت کنید.
- این نقش، مجوزی برای دیدن سایر اعضا و استفاده از Plan ندارد.
- اما با ارسال مستقیم تماسهای API چطور؟ یعنی:
https://api.target.com/workspace/restrictions
https://api.target.com/workspace/users?limit=100&offset=0
https://api.target.com/workspace/invitations?limit=1000&offset=0
https://api.target.com/workspace/user_balance
به این ترتیب من به عنوان یک عضو با امتیاز پایین توانستم تمام جزئیات را به دست بیاورم.
Reward : 500USD
Additional Vulnerability : Origin IP Leaked leading to firewall bypass
پس از این، در نهایت من یک آسیبپذیری Origin IP را گزارش کردم که به دلیل آن، دامنه و ویژگیها مستقیماً از طریق IP قابل دسترسی بودند. بدین صورت من توانستم به صورت کامل فایروال Cloud Flare آنها را Bypass کنم. من همچنین توانستم از برخی از نقاط پایانی بازدید کنم که از طریق دامنه آنها قابل دسترسی نبودند اما میتوانستم با استفاده از Origin IP که پیدا کردم به آنها دسترسی پیدا کرد.
برای این آسیبپذیری ساده، آنها 300 دلار به من پاداش دادند.
Conclusion
همیشه لازم نیست IDOR، SSRF، XSS و غیره را پیدا کنید. گاهی تنها چیزی که نیاز دارید این است که عملکرد را درک کنید و سپس به هر شکل ممکن از آن سوء استفاده کنید.
همه این آسیبپذیریها گزارش شدند و با یک بازه زمانی 4 تا 5 روزه پاداش گرفتند. مجموع پرداخت پاداش 2300 USD با یک پیام قدردانی بسیار انگیزشی از خود COO بود. همه این آسیبپذیریها اگر با هم مورد سوء استفاده قرار گیرند، ممکن است هزاران دلار ضرر شرکت هدف را به همراه داشته باشد.
منبع:
infosecwriteups.com/1-program-4-business-logic-bugs-and-cashing-in-2300-299b42236993