从CSRF到用户信息泄漏,XSS和完整帐户接管
0x00前言
CSRF漏洞的严重性在很大程度上取决于漏洞的位置。有时,错误的CSRF保护机制会导致无关紧要的问题,例如未经授权的设置更改或清空用户的购物车。有时,它们会导致更大的问题:用户信息泄漏,XSS甚至一键式帐户接管。
我在CSRF中遇到了一些导致严重安全问题的案例。通常,这些是CSRF和其他较小的设计缺陷的组合。
CSRF有时会导致信息泄漏。应用程序经常根据用户偏好发送或公开信息。如果这些设置端点没有受到CSRF的保护,则可以为敏感信息公开铺平道路。实现基于CSRF的信息泄漏的一种方法是处理这些请求。
|
|
安全团队几乎总是将Self-XSS视为非问题,因为它们难以利用。但是,与CSRF结合XSS使用时,自身XSS通常可以变成存储的XSS。
例如,在我遇到的一个金融网站上,用户可以为每个链接的银行帐户创建昵称。帐户昵称字段容易受到XSS的攻击:该字段上的用户输入不进行清理,验证或转义。但是,这是只有授权用户才能编辑和查看的字段,因此攻击者无法直接触发XSS。
不幸的是,用于更改帐户昵称的终结点计算机上也存在CSRF错误。该应用程序未正确验证CSRF令牌的存在,因此仅在请求中省略令牌参数将绕过CSRF保护。例如:
|
|
虽然此请求将成功更改用户的帐户昵称,并存储XSS有效负载。下次用户登录帐户并查看其仪表板时,将触发XSS。
例如,这是我在客户端的Web应用程序中发现的错误。该网络应用程序允许社交媒体注册。用户通过社交媒体注册后,他们可以选择通过以下请求设置密码:
|
不幸的是,这正是在此特定端点上发生的事情。应用程序无法正确验证CSRF令牌,并接受一个空值作为csrftok参数。因此,从本质上讲,以下请求会将任何人(尚未设置密码)的密码设置为ATTACKER_PASS。
|
现在,攻击者所需要做的就是将该请求嵌入到网站用户经常访问的页面上,并且它可以将访问这些页面的任何用户的密码自动分配给ATTACKER_PASS。之后,攻击者可以使用新分配的密码自由作为任何受害者登录。
CSRF非常普遍,非常容易利用。虽然我遇到的大多数CSRF都是低严重性问题,但有时对关键端点进行监督可能会导致严重后果。
-免费获取学习资料
电子书籍、试听课程-