Web漏洞搜索
上QQ阅读APP看书,第一时间看更新

3.4 Twitter取消订阅通知

难度:

URL:https://www.twitter.com/

报告位置:https://blog.mert.ninja/twitter-hpp-vulnerability/

报告日期:2015年8月23日

支付奖金:700美元

在某些情况下,发现HPP漏洞需要耐心。2015年8月,Mert Tasci在取消订阅接收Twitter通知时注意到了一个有趣的URL(在这里我已将其缩短):

注意参数UID。该UID恰好是当前登录的Twitter账户的用户ID。在注意到这一点之后,Tasci做了大多数黑客会做的事情——他试图将UID更改为另一个用户的UID,但是这个操作没有任何反馈。Twitter只是返回了一个错误。

在别人可能选择放弃时,Tasci决定继续执行,他尝试添加第二个UID参数,URL看起来如下所示(同样是缩短的版本):

他成功了!他设法取消了其他用户的电子邮件通知订阅。Twitter容易受到HPP退订用户攻击。正如FileDescriptor向我解释的那样,此漏洞值得注意的原因与SIG参数有关。事实证明,Twitter使用UID值生成SIG值。当用户单击取消订阅的URL时,Twitter将通过检查SIG和UID值来验证URL是否未被篡改。因此,在Tasci的初始测试中,通过更改UID的值使另一个用户取消订阅失败了,这是因为签名与Twitter预期的不一致。但是,通过添加第二个UID,Tasci成功地让Twitter使用第一个UID参数验证签名,使用第二个UID参数执行退订操作。

要点

Tasci证明了坚持和知识的重要性。如果他在将UID更改为另一个用户并失败后放弃了该漏洞,或者他不知道HPP型漏洞,那么他就不会获得700美元的奖金。

另外,还要注意HTTP请求中包含的具有自动递增的整数(例如UID)的参数:许多漏洞涉及操纵此类参数值,以使Web应用程序出现非预期的错误。我将在第16章中对此进行详细讨论。