启用 CORS 的 Wordpress REST API 是否存在安全风险?

信息安全 休息 WordPress 科尔斯
2021-08-29 04:34:16

在对使用 REST API 运行 Wordpress 的站点进行安全检查后,由于非常灵活的 CORS 策略允许第三方与服务交互,扫描程序将路由 /wp-json/ 标记为漏洞。但是,我找不到在不要求受害者提供更多信息的情况下可能被盗的敏感信息的具体来源。例如,Wordpress REST API 提供了几种对用户进行身份验证的方法,所以我认为其中一种可能容易受到攻击。

  1. 基于 Cookie 的身份验证。它似乎只对主题和插件有用,用户需要提供随机数才能访问资源。
  2. 基本身份验证。它需要带有用户凭据的 base 64 编码标头。
  3. o认证。它需要通过向客户端提供令牌并在主服务中注册这些客户端来进行配置,我认为您需要在每个请求中提供此令牌。

如果您有其他想法或更正,请告诉我。

启用 CORS 的 REST API 是否存在一些安全风险?

更新:

作为附加说明,在这种特殊情况下,通过根据请求的标头设置标头以Access-Control-Allow-Origin: *编程方式绕过限制。通常,这足以引起关注,但在这种情况下,我不确定 REST API 提供的身份验证机制是否足以防止与 CORS 相关的漏洞。Access-Control-Allow-OriginOrigin

1个回答

CORS 是一种经常被误解的机制,甚至一些安全扫描程序也弄错了。例如,有些人会标记Access-Control-Allow-Origin: *为严重问题,而没有意识到浏览器不会随请求发送凭据(例如 cookie)(您不能将该通配符值与 结合使用Access-Control-Allow-Credentials: true)。

这是最常见的情况,如果没有您的 CORS 政策的详细信息,很难说这是否是您的案例中报告的情况。

我能想到的使用 CORS 的 REST API 的主要风险是,如果 ACAO 中列出了不受信任的来源,那么您设置了 ACAC: true 并且用户访问了不受信任的来源,同时对站点进行了身份验证并且请求通过了他们的 cookie(s) 允许检索受保护的内容,因为您可以看到一个相当复杂的设置。

如果您想了解有关 CORS 的更多信息,我建议您阅读thisthis另外值得注意的是,Wordpress 的 REST API 可能存在一些安全问题,例如,无需身份验证即可检索有效用户名