想象一下你有很大的合作。现在有人发现CSRF漏洞只能通过自己的站点运行(因为通过检查Referer-Header,没有CSRF令牌来保护站点)。这可以执行关键操作,但前提是请求来自您的站点。这意味着小型XSS攻击可以通过此漏洞执行更大的操作。您是否将此视为一个关键漏洞,是否应该将其作为CSRF攻击奖励?
答案 0 :(得分:1)
XSS漏洞总是胜过任何CSRF / OSRF攻击。试想一下,如果表单不受引用者保护但受到令牌的保护,则XSS攻击可以简单地从DOM中读取令牌,然后提交表单。
因此,网站没有额外的风险。唯一的例外是,Open Redirect Vulnerability与作为GET实施的不安全行为相结合。
说以下网址可用:
public class MyResponseClass {
@SerializedName("unknown")
private Map<String, Object> myResponse;
//Getter and setter
}
处理程序验证referer以确保请求来自https://example.com/delete_my_account
。
但是,还有另一个可用于发布JavaScript重定向的URL:
https://example.com/*
这将在网站内按如下方式调用以跟踪外部链接:
https://example.com/redirect_to_site
然而,通过构建重定向到以下内容的CSRF攻击,可能会发生OSRF攻击:
https://example.com/redirect_to_site?https://google.com
由于检查了referer,这将验证请求,因为只有https://example.com/redirect_to_site?https://example.com/delete_my_account
在这里检查引用,因为这被认为是不安全的操作。但是,因为它可以在未受保护的处理程序上重定向,所以它可以破坏引用程序保护。
因此,除非网站上有此类功能,或者除非网站允许用户内容构建此类链接,否则检查referer是否存在CSRF保护漏洞。
注意:在任何人提到可以欺骗引用标头之前,这只能来自攻击者自己的连接。在CSRF攻击中,您需要对受害者的连接进行欺骗 - CSRF是对另一个用户的攻击 - 因此尽管引用者是弱保护,但在许多情况下它仍然足够。