漏洞描述通过操控缓存机制,未经授权的用户可以访问敏感的个人身份信息 (PII),例如姓名、电话号码、电子邮件地址、用户 ID 以及加密的 IP 地址。
在渗透评估目标期间,虽然服务器实施了限制,防止对响应中包含会话令牌或数据的 API/Web 端点进行 Web 缓存欺骗攻击。
但不幸的是,在其 /404 或 /nonexistingurl 页面上并没有实施相同的防护措施,从而在这些端点的响应包中获得了 PII 信息。
风险分析漏洞复现第二步:观察到请求的响应将“cache-control”设置为public,并且该请求的响应访问两次后被缓存为“HIT”:
第三步:在验证当前经过身份验证的用户对此请求的响应或访问任何不存在的目录后,你将在响应包中获得 PII 信息:
第四步:现在我们知道任何不存在的目录都会抛出 404 Oops 页面,但响应包包含 PII 信息。
要验证此漏洞,需连续发送步骤1中的请求,以便可以使用 Burp Suite Intruder 等工具测试缓存在服务器上特定 URL 的响应,将Payloads设置为 null,并输入 500 个数字。
漏洞影响利用该漏洞攻击者可以访问并可能滥用 PII 数据,从而导致隐私侵犯、身份窃取以及其它恶意活动。
模糊的 UserID 值泄漏使攻击者能够将该漏洞与其它漏洞(例如 IDOR 攻击)进行组合,以获得对敏感资源的未经授权访问、操纵数据,甚至造成重大损害。
防御建议检查和更新缓存控制:确保在所有 Web 端点(包括 /404 页面)上正确配置缓存控制。实施缓存策略,防止敏感 PII 数据存储在缓存中提供给未经授权用户。
实施身份验证检查:对可能访问 PII 数据的所有请求实施身份验证检查。只有经过身份验证和授权的用户才有权访问敏感信息。
增强错误处理:自定义 /404 页面和任何其它不存在的 URL 端点的错误处理。避免在错误响应中显示敏感数据,或是提供通用的错误消息。