信息泄露的基本示例
- robots.txt通过文件或目录列表,显示隐藏目录的名称、结构和内容
- 通过临时备份提供对源代码文件的访问
- 在错误消息中明确提及数据库表或列名
- 不必要地暴露高度敏感的信息,例如信用卡详细信息
- 在源代码中硬编码API密钥,IP地址,数据库凭证等
- 通过应用程序行为的细微差异来暗示资源、用户名等是否存在
信息泄露漏洞是如何产生的 - 例如,开发人员的注释有时对生产环境中的用户可见
- 网站和相关技术的不安全配置。例如,未能禁用调试和诊断功能有时可以为攻击者提供有用的工具来帮助他们获取敏感信息。默认配置也可能使网站容易受到攻击,例如,通过显示过于冗长的错误消息
- 应用程序的设计和行为有缺陷。例如,如果一个网站在发生不同的错误状态时返回不同的响应,这也可以让攻击者枚举敏感数据,例如有效的用户凭据
如何测试信息泄露漏洞
- 一个常见的示例是使应用程序逻辑尝试对特定数据项执行无效操作。例如,提交无效的参数值可能会导致堆栈跟踪或包含有趣细节的调试响应。您有时可能会导致错误消息在响应中披露所需数据的值
信息泄露的常见来源 - /robots.txt和/sitemap.xml这些文件通常会列出爬虫应跳过的特定目录,需手动检查下是否敏感
- 目录列表
- 可以将 Web 服务器配置为自动列出不存在索引页面的目录的内容
- 开发者注释
- 内嵌 HTML 注释添加到标签中,可以使用 Burp 甚至浏览器的内置开发工具轻松访问它们
- 错误信息
- 例如,他们可能会明确命名网站正在使用的模板引擎、数据库类型或服务器,以及其版本号
- 冗长的错误消息
- 调试数据
- 出于调试目的,许多网站会生成自定义错误消息和日志,其中包含有关应用程序行为的大量信息。虽然这些信息在开发过程中很有用,但如果它在生产环境中泄露,它对攻击者也非常有用
- 例如: 1.可以通过用户输入操作的关键会话变量的值2.后端组件的主机名和凭据3.服务器上的文件和目录名称4.用于加密通过客户端传输的数据的密钥- 调试信息有时可能会记录在单独的文件中。如果攻击者能够访问此文件,它可以作为了解应用程序运行时状态的有用参考
- 用户账户页面
- 就其本质而言,用户的个人资料或帐户页面通常包含敏感信息,例如用户的电子邮件地址、电话号码、API 密钥等。由于用户通常只能访问自己的帐户页面,因此这本身并不代表漏洞。但是,某些网站包含可能允许攻击者利用这些页面来查看其他用户数据的逻辑缺陷
- 通过备份文件泄露源代码
- 获得源代码访问权限使攻击者更容易了解应用程序的行为并构建高严重性攻击。敏感数据有时甚至被硬编码在源代码中。这方面的典型示例包括用于访问后端组件的 API 密钥和凭据
- 文本编辑器通常会在编辑原始文件时生成临时备份文件。这些临时文件通常以某种方式表示,例如通过附加波浪号 (~) 到文件名或添加不同的文件扩展名。使用备份文件扩展名请求代码文件有时可以让您在响应中读取文件的内容。
- 配置不安全导致信息泄露
- 开发人员可能会忘记在生产环境中禁用各种调试选项
- HTTP TRACE 方法是为诊断目的而设计的。如果启用,Web 服务器将TRACE 通过在响应中回显接收到的确切请求来响应使用该方法的请求。这种行为通常是无害的,但偶尔会导致信息泄露,例如可能被反向代理附加到请求的内部身份验证标头的名称
- 版本控制历史
- 可能可以通过简单地浏览来访问它/.git
