一个简单的401错误如何泄露系统关键信息

本文详细描述了一个看似普通的401未授权错误如何意外泄露了大量敏感信息,包括明文凭证、API密钥和服务器配置数据,揭示了错误处理不当导致的信息泄露漏洞及其潜在危害。

一个简单的401错误如何泄露系统关键信息

有时候,最有趣的漏洞会在你最不经意的时候出现。

在对目标网站进行侦察后,我发现了一个看起来相当普通的端点…那天我并没有做什么特别的事情,只是在探索一个需要登录访问的闪卡式网站。当我进入页面时,弹出了一个小的登录提示:

“您必须登录才能访问此内容。”

没什么大不了的。我没有有效的用户名或密码,所以我打开了Burp Suite来查看后台发生了什么。

奇怪的401未授权错误

当我拦截请求时,响应返回为:

1
HTTP/1.1 401 Unauthorized

到目前为止都很正常。但随后有东西引起了我的注意 - 响应体不是空的。

通常,401响应只告诉你未获得授权。但这个错误消息下面有一大段文本。出于好奇,我向下滚动…

💥 就在这时我看到了它

隐藏在401响应中的是你在生产环境中永远不应该看到的一切:

  • 明文用户名和密码
  • API密钥
  • 令牌值
  • 摄像头IP
  • 根访问凭证
  • 甚至内部服务器路径

起初,我以为是我的代理出了问题,但不对 - 服务器确实在每个未授权响应中都转储了内部配置数据。

感觉就像打开了一个标有"请勿打开"的宝藏箱 😅

根本原因

深入挖掘后,我意识到可能发生了什么:

该网站使用了一个自定义错误处理程序,该程序将内部环境变量或调试信息打印到响应中。

当开发人员配置401未授权消息时,他们一定不小心包含了用于调试的敏感服务器数据,并在上线前忘记删除它。

这是一个典型的信息泄露漏洞,由错误的错误处理引起。

影响

这个漏洞暴露了:

  • 管理员凭证
  • 访问令牌
  • 内部服务IP
  • 连接到第三方服务的API密钥

如果落入坏人之手,这很容易导致:

  • 账户接管
  • 完全服务器入侵
  • 数据泄露

经验教训

始终清理你的错误消息。

你的401、403或500响应应该只告诉用户他们需要知道的内容 - 仅此而已。

调试数据属于日志,而不是响应。

正如我现在喜欢说的:

“即使是一个错误页面,也可能是你应用程序中最大的漏洞。”

有时候,你不需要高级的侦察工具或模糊测试器来发现漏洞。

只需要好奇心、耐心和检查每个响应的习惯 - 即使是那些看起来无害的响应。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计