以纯文本形式显示密码的重定向是否存在安全漏洞?

信息安全 验证 密码 Web应用程序
2021-08-22 02:15:38

几天前,我尝试登录某知名 SaaS 提供商的网站。我在浏览器上使用了密码管理器(因此用户/密码是正确的)和 NoScript 插件,该插件授予网站的权限有限,因此某些 JS 被阻止。整个交换是通过 HTTPS 进行的。

响应是使用如下 URL 重定向回登录站点,并且login_password数据也已填充到password输入的值。

.../login?login_email=user@example.com&login_password=REDACTED&remember_me=on

这是否会被归类为一种弱方法和一种不良做法,需要通过客户支持提出,还是应该将其报告为安全漏洞?

更新

该公司已通过权宜之计做出回应,以防止原始问题被复制。

进一步更新

我刚刚看到这个并意识到我没有发布最终更新。所以很晚了:

是 Dropbox。该错误报告超出了他们通过 HackerOne 进行的错误赏金计划的严格职权范围,但他们确实以现金奖励奖励该报告并且已修复。我认为现在已经超出了披露限制。

2个回答

绝对有问题 - 值得报告。

如果 HTTPS 受到HSTS预加载的适当保护,那么观察流量的威胁参与者将无法看到 GET 内容。但是由于 HSTS 仍然很少见(如果他们将明文密码放在 GET 中,他们可能不知道其他最佳实践,如 HSTS),拦截/降级风险可能有点高。

除此之外,无论 HTTPS 设置的健康状况如何,远程 HTTP 服务器几乎总是在服务器的日志中记录完整的 GET 内容——因此这些明文密码也可能被记录在服务器上。

[编辑:vakus 的回答更彻底地涵盖了其余的攻击向量!]

这应该立即报告。

有多种可能的攻击可能导致用户帐户遭到破坏。

根据OWASP ,显示为 GET 参数的密码不仅是一个漏洞,还有许多可能被滥用的方式。

常见漏洞允许通过 SQL 注入等攻击媒介盗取受保护的密码。受保护的密码也可能从日志、转储和备份等工件中窃取。

(引用和链接来自March Ho的评论)

我什至会考虑寻找另一项服务,因为这样的政策表明缺乏能力。

以下是可以包含在报告中的一些亮点

日志文件

GET 参数提交的密码将被记录到日志文件中。这意味着该服务的管理员现在能够以纯文本形式查看您的密码。这与在数据库中以纯文本形式存储密码一样糟糕。没有任何东西可以向用户保证管理员或特权人员不会变成流氓并使用用户的密码来访问他们的其他服务。众所周知,密码重用非常普遍。

这也意味着如果系统受到威胁,攻击者只需要读取日志文件而不是破解数据库。这是一个巨大的漏洞,会导致许多用户帐户在许多平台上受到损害。

最近在 twitter 上发生了类似的事情,其中密码以纯文本形式存储在一个内部日志文件中。Twitter 已提示所有用户更改密码,包括在用户使用相同密码的其他网站上,即使没有证据表明该漏洞被泄露或滥用。这表明如果服务器受到威胁,这可能会对用户产生严重影响。

肩挑眼

附近的任何人都可以看到您的纯文本密码并记下它。然后,该密码可能会被用来破坏其他服务,因为密码通常会在服务中重复使用。

浏览器历史

密码将作为网络浏览器历史记录的一部分存储,这意味着任何可以访问您的计算机和网络浏览器的人都可以在不知道密码的情况下登录您的帐户。如果您使用的是公共计算机,情况只会变得更糟。

因此,任何有权访问历史记录的人现在也可以复制您的密码和登录名,再次允许破坏您的其他服务。

HTTPS

您说该网站使用 HTTPS 运行。但是,不能保证该网站正在使用预加载和HSTS

HSTS 将强制 Web 浏览器通过 HTTPS 连接加载网站。

如果网站没有使用 HSTS,那么网站可能无法升级到 HTTPS 连接。这可以通过 SSL Strip 完成,它将所有 HTTPS 链接转换为 HTTP。如果网站正在使用 HSTS,网络浏览器将自动尝试通过 HTTPS 加载网站,如果无法通过 HTTP 连接将拒绝。然而,即使该网站使用 HSTS,如果该网站之前从未在目标 Web 浏览器上打开过,SSL Strip 攻击将一直有效,因为 Web 浏览器还不知道该网站只能通过 HTTPS 加载。

为了防止这种情况,网站将使用预加载。对于预加载,Web 浏览器将有一个内置的网站数据库,该数据库必须通过 HTTPS 加载,并且永远不应该通过 HTTP 加载。这将有效地防止 HTTPS降级攻击。

安全审计

密码作为日志文件的一部分存储的事实表明,该公司很可能没有执行安全审计,或者如果他们执行了,那么作为一家公司,他们并没有非常关注安全性。

HTTP 引荐来源网址

正如Llama 先生在评论中提到的那样

GET 参数也可以出现在 HTTP 引用标头中。从页面加载的任何场外资源也可以通过引用标题发送您的凭据。

链接分享

如果出于某种原因您需要将网站链接提供给其他人(例如同事),您很可能只是将其复制并发送给该人。这将再次让此人访问您的帐户以及您的登录名和密码信息,这些信息可用于访问其他平台上的帐户。

搜索蜘蛛

搜索蜘蛛基本上是跟踪网站上每个可能的链接并将其编入索引。虽然这不太可能,但像 Google 或 Bing 这样的搜索蜘蛛可以索引暴露的链接并将其显示为网站搜索的一部分。这意味着人们可以从 Google 或 Bing 登录您的帐户。


我会尽可能紧急地与公司联系。这样做的安全影响是巨大的,并且会影响到许多用户。

如果可能的话,我什至会考虑更换 SaaS 供应商,如果公司不遵守报告,他们应该因为简单的密码违规而被公开羞辱。