3.5 Twitter弹出窗口

难度:

URL:https://twitter.com/

报告位置:https://ericrafaloff.com/parameter-tampering-attack-on-twitter-web-intents/

报告日期:2015年11月

支付奖金:未公布

在某些情况下,HPP漏洞可能隐含了其他问题,并且可能引导人们发现其他错误。这就是Twitter Web Intents功能中发生的事情。该功能提供弹出窗口,用于在非Twitter网站的环境中处理Twitter用户的推文、回复、转发、点赞和关注。Twitter Web Intents使得用户可以与Twitter内容进行交互,而无须离开页面,或为了交互而授权新应用。图3-1显示了这些弹出窗口之一的示例。

图3-1 Twitter Web Intents功能的早期版本,该功能使用户无须离开页面即可与Twitter内容进行交互。在此示例中,用户可以为Jack的推文点赞

通过测试此功能,黑客Eric Rafaloff发现四种功能类型(关注、点赞、转发和发推)都容易受到HPP的攻击。Twitter将通过如下带有URL参数的GET请求实现每个功能:

该URL将包括intentType以及一个或多个参数名称/值对,例如Twitter用户名和Tweet ID。Twitter将使用这些参数创建弹出窗口让用户关注或点赞。Rafaloff在为某个弹窗创建带有两个screen_name参数的URL时发现了一个问题,之前的做法都是用一个screen_name参数。该弹窗如下所示:

Twitter在生成“关注”按钮时将优先使用第二个screen_name值ericrtest3而不是第一个twitter值。因此,试图关注Twitter官方账户的用户可能会被诱骗来关注Rafaloff的测试账户。访问Rafaloff创建的URL将导致Twitter的后端代码使用两个screen_name参数生成以下HTML表单:

Twitter将使用来自第一个screen_name参数的值,该参数与官方Twitter账户相关联。结果,目标用户将看到他们想要关注的用户的正确个人资料,因为URL的第一个screen_name参数用于在❷和❸处填充代码。但是,单击按钮后,目标用户将会关注ericrtest3,因为form标记中的操作将改为使用传递给原始URL的第二个screen_name参数的值❶。

同样,在呈现点赞的意图时,Rafaloff发现尽管与喜欢该推文没有任何关系,依然可以追加screen_name参数。例如,他可以创建以下URL:

普通的点赞意图仅需要tweet_id参数,但是,Rafaloff将screen_name参数加到了URL的末尾。点赞此推文会向目标用户展示正确的关注者信息,以使其喜欢该推文。但是点赞旁边的“关注”按钮将链接到无关用户ericrtest3。

要点

Twitter Web Intents漏洞与以前的UID Twitter漏洞类似。毫无疑问,当站点容易受到HPP之类的漏洞的影响时,这可能表明存在更广泛的系统问题。有时,当发现平台具有此类漏洞时,值得花时间全面研究该平台,以检测是否有其他相似漏洞可以利用。