该漏洞存在于 LiquidFiles 4.1 及以下版本中。
当通过 “POST /password_reset” 端点发起密码重置时,应用程序会根据所提供的电子邮件地址是否已注册而做出不同的响应。两种情况下都会发出重定向,且响应中包含 “_filetransfer_session” Cookie。当使用该 Cookie 访问根路径(“/”)时,所产生的错误消息会根据所提交电子邮件地址的有效性而有所不同。
这实际上允许攻击者整理出一份有效用户列表,进而可用于暴力破解/密码喷洒等攻击。
密码重置响应 – 已存在/有效用户
密码重置响应 – 不存在/无效用户
经过多次密码重置尝试后,会触发基于 IP 的锁定机制作为安全措施,阻止来自同一 IP 地址的后续请求。然而,该机制并不充分,因为可以使用免费工具绕过。例如,可通过 AWS API Gateway 代理结合 Burp Suite 中的 “IP Rotate” 扩展来规避锁定。该脚本预期本地代理运行在 8080 端口。
用于绕过基于 IP 的锁定机制的应用程序:
错误消息中的这种差异使得自动化枚举有效用户名或电子邮件地址成为可能。为演示这一点,我编写了一个概念验证脚本,该脚本接收一份潜在已注册电子邮件地址列表,并根据应用程序的响应行为识别出有效地址。
用户枚举脚本的输出:
一旦识别出有效用户名,即可将其用于暴力破解或密码喷洒攻击。鉴于部分用户可能使用弱密码或重复使用的密码,这构成了较高的安全风险。
被利用的可能性较高,现有安全措施易于绕过,且利用过程简单直接。影响程度被视为中等,因为在获取有效用户列表后,仍需通过密码喷洒或暴力破解攻击来攻破账户。
请注意,该应用程序被许多不同的组织所使用,且几乎总是面向公共互联网。这使得攻击者只需从互联网上搜集员工电子邮件地址或姓名,然后对该应用程序进行密码喷洒即可。
因此,该问题构成高风险。
4.2 版本通过引入基于用户的锁定机制,并默认禁用允许用户枚举的差异化错误消息来解决此问题。