专栏首页FreeBuf利用越权漏洞窃取Airbnb房东的收款资金

利用越权漏洞窃取Airbnb房东的收款资金

今天分享的Writeup是作者在2017年发现,在最近披露的Airbnb平台漏洞,漏洞类型为越权(IDOR),攻击者可以利用漏洞向Airbnb平台中的房东收款信息中添加进自己的银行账户,从而窃取房东的收款资金。

Airbnb是AirBed and Breakfast (“Air-b-n-b”)的缩写,中文名爱彼迎,它是旅游人士和房屋房东的中间服务平台,通过该平台,可以为家有空房的房东提供短期租房服务,形式包括假期租赁、公寓租赁、寄宿家庭、招待所床位或酒店客房等,也能让旅行者可以通过网站或手机预订世界各地的各种独特房源,是近年来共享经济发展的代表之一。爱彼迎公司不拥有任何住宿房间,它仅只是住客与房东之间的中间经纪平台,收入来源为每次预订发生时从住客与房东双方收取的一定比例的服务费(佣金),爱彼迎在全球65,000个城市和191个国家有超过3,000,000个预订住宿清单,具体住宿费用由房东根据爱彼迎公司的建议来确定。

漏洞介绍

IDOR,Insecure Direct Object reference,即”不安全的直接对象引用”,也叫越权漏洞,场景为基于用户提供的输入对象进行访问时,Web应用未进行权限验证,不检查当前访问请求是否有对目标对象的访问权限,因此导致了IDOR漏洞。IDOR漏洞属于失效的访问控制范畴,也可以说是逻辑漏洞,或是访问控制漏洞。测试者可以通过变化请求参数的值来确定该类型漏洞,开发者可以通过源代码分析来确定权限验证是否合理。

房东在Airbnb平台进行收款设置时,首先Airbnb需要添加收款账户,如果添加成功,接下来它就会为房东生成一个收款ID-payout_ID,这个收款ID用于之后跨境收款服务商派安盈( Payoneer)生成的收款账户链接,通过该链接则会跳转到一个银行账户添加的页面,在这个页面中,房东可以把自己的银行收款账户填入其中以备后续对住客的收款。然而,就是在房东收款ID(payout_ID)生成和银行账户添加链接的跳转过程中,存在IDOR漏洞,Airbnb只确认了收款ID(payout_ID)的有效性,却没对用户实际权限做验证,因此,攻击者如果获得了房东的银行账户添加页面链接,攻击者可以用自己的Airbnb身份验证Token(authenticity_token)替换掉房东的Token(authenticity_token),成功跳转到属于房东的银行账户添加页面,然后可以把自己的银行账户添加进入,实现窃取房东收款资金的目的。

漏洞复现

1、在Airbnb平台创建一个受害者账户(Victim),在设置里面添加收款账户信息;

2、开启BurpSuite抓包,当收款账户添加之后,可以在BurpSuite中捕获到以下POST数据包:

POST /users/payoneer_account_redirect/[payout_ID] HTTP/1.1

Host: www.airbnb.co.in

User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate, br

Referer: https://www.airbnb.co.in/users/payout_preferences/115687601/new

Cookie: [cookie_values]

Connection: close

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

Content-Length: 118

authenticity_token=&user_id=[user_id]

3、这里先不着急填写收款账户信息;

4、我们转到Airbnb平台再创建一个攻击者账户(Attacker),同样在该攻击者账户中添加收款信息,然后抓取该过程中的数据包,其中会产生一个包括收款ID(payout_ID)的收款链接;;

5、注意,在此过程中攻击者账户同样会产生一个包括收款ID(payout_ID)的收款链接;

6、这里,我们把攻击者收款链接中的收款ID(payout_ID)替换成受害者的收款ID(payout_ID),

7、然后把该请求发向Airbnb服务端,之后攻击者会收到Airbnb服务端响应回来的有效Payoneer收款链接;

8、通过这个收款链接可以打开收款账户的填写页面,在其中填入攻击者自己的银行账户,那么受害者的所有收款都会转入到攻击者银行账户。

PoC视频如下,其中Chrome中的Airbnb账户为受害者账户,而Opera中的账户为攻击者账户:

Notice:上述攻击过程中涉及替换的受害者收款ID(payout_ID)必须是没用过的,也就是说作为房东的受害者自己还没有添加过收款信息,针对这样的房东受害者,攻击才能有效。

漏洞影响

以上存在漏洞将会影响Airbnb平台中至少20%到30%的房东账户,攻击者只需利用漏洞往其中添加进自己的银行账户,那么房东的后续收款将流向攻击者银行账户,变为攻击者所有。

漏洞上报及处理进程

2017.2.13 漏洞初报 2017.2.15 告知漏洞细节 2017.2.28 漏洞分类 2017.3.3 漏洞修复 2017.3.21 Airbnb奖励我3000$

*参考来源:indoappsec,clouds 编译整理,转载请注明来自 FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf),作者:clouds

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP网站渗透中的奇技淫巧:检查相等时的漏洞

    PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态、弱类型的面向对象式编程语言。可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和...

    FB客服
  • WIN10下ROP初体验

    * 本文原创作者:与非门salome,本文属FreeBuf原创奖励计划,未经许可禁止转载 首先,在windows10下编写一个具有一定安全机制但又存在漏...

    FB客服
  • 思科产品中存在严重硬编码密码漏洞和Java反序列化漏洞

    近日,思科发布了 22 条安全公告,其中包括两条重要的修复方案:修复一个硬编码密码漏洞( CVE-2018-0141)和一个 Java 反序列化漏洞(CVE-2...

    FB客服
  • 如何在非安全的CDH集群中部署多用户JupyterHub服务并集成Spark2

    Fayson在前一篇文章《如何在非安全的CDH集群中部署Jupyter并集成Spark2》中介绍了Jupyter Notebook的部署与Spark2集成。Ju...

    Fayson
  • 常见的全局ID生成方案

    在分布式系统架构中,经常都需要一个全局的ID生成器,来保证系统中某些业务场景中对于主键的要求,当前实现ID生成的方式还是挺多的。本文我们来谈谈常见的ID生成方式...

    终身幼稚园
  • OpenSSL与yaSSL性能对比

    摘要 MySQL可以使用OpenSSL或yaSSL/wolfSSL进行编译,这两者都支持基于OpenSSL API的加密连接。在5.7版本,我们知道默认情况下...

    腾讯数据库技术
  • 【干货】MySQL 分库分表及其平滑扩容方案

    众所周知,数据库很容易成为应用系统的瓶颈。单机数据库的资源和处理能力有限,在高并发的分布式系统中,可采用分库分表突破单机局限。本文总结了分库分表的相关概念、全局...

    IT技术小咖
  • java — 排序算法

    Mister24
  • 数读城市:泉州近8年天气和气候分析

    本文的主要目的是研究泉州近8年来天气特征以及气候特征,研究二者之间的相关关系,并且对未来的天气和气候情况做预测分析,主要使用的数据如下:

    沉默的白面书生
  • python supervisor使用

    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。Supervisor...

    周小董

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动