信息披露的常见来源

信息披露可能发生在网站内的各种环境中。以下是您可以查看敏感信息是否暴露的一些常见位置示例。

  • 网络爬虫文件
  • 目录列表
  • 开发者评论
  • 错误消息
  • 调试数据
  • 用户帐户页面
  • 备份文件
  • 不安全的配置
  • 版本控制历史

网络爬虫文件

许多网站提供的文件/robots.txt,并/sitemap.xml以帮助爬虫浏览他们的网站。除其他外,这些文件通常会列出爬虫应跳过的特定目录,例如,因为它们可能包含敏感信息。

由于这些文件通常不会从网站内部链接,因此它们可能不会立即出现在 Burp 的站点地图中。但是,值得尝试导航/robots.txt或/sitemap.xml手动查看是否找到任何有用的东西。

目录列表

Web 服务器可以配置为自动列出没有索引页的目录的内容。这可以帮助攻击者快速识别给定路径上的资源,并直接继续分析和攻击这些资源。它特别增加了用户不打算访问的目录中敏感文件的暴露,例如临时文件和故障转储。

目录列表本身不一定是安全漏洞。但是,如果网站也没有实施适当的访问控制,以这种方式泄露敏感资源的存在和位置显然是一个问题。

开发者评论

在开发过程中,有时会向标记中添加内嵌 HTML 注释。在将更改部署到生产环境之前,通常会删除这些注释。然而,评论有时会被遗忘、遗漏,甚至故意留下,因为有人没有完全意识到安全隐患。尽管这些评论在呈现的页面上不可见,但可以使用 Burp 甚至浏览器的内置开发人员工具轻松访问它们。

有时,这些评论包含对攻击者有用的信息。例如,它们可能暗示隐藏目录的存在或提供有关应用程序逻辑的线索。

错误信息

信息泄露的最常见原因之一是冗长的错误消息。作为一般规则,您应该密切注意审核期间遇到的所有错误消息。

错误消息的内容可以揭示有关给定参数预期的输入或数据类型的信息。这可以帮助您通过识别可利用的参数来缩小攻击范围。它甚至可以防止您浪费时间尝试注入根本不起作用的有效负载。

详细的错误消息还可以提供有关网站使用的不同技术的信息。例如,他们可能会明确命名网站正在使用的模板引擎、数据库类型或服务器及其版本号。此信息很有用,因为您可以轻松搜索此版本可能存在的任何记录的漏洞利用。同样,您可以检查是否存在您可以利用的常见配置错误或危险的默认设置。其中一些可能会在官方文档中突出显示。

您可能还会发现该网站正在使用某种开源框架。在这种情况下,您可以研究公开可用的源代码,这是构建您自己的漏洞利用的宝贵资源。

错误消息之间的差异还可以揭示在幕后发生的不同应用程序行为。观察错误消息中的差异是许多技术的关键方面,例如SQL 注入、用户名枚举等。

调试数据

出于调试目的,许多网站会生成自定义错误消息和日志,其中包含有关应用程序行为的大量信息。虽然这些信息在开发过程中很有用,但如果它在生产环境中泄露,对攻击者来说也是非常有用的。

调试消息有时可能包含开发攻击的重要信息,包括:

  • 可以通过用户输入操作的关键会话变量的值
  • 后端组件的主机名和凭据
  • 服务器上的文件和目录名称
  • 用于加密通过客户端传输的数据的密钥

调试信息有时可能会记录在单独的文件中。如果攻击者能够访问此文件,它可以作为了解应用程序运行时状态的有用参考。它还可以提供一些关于它们如何提供精心设计的输入来操纵应用程序状态和控制接收到的信息的线索。

用户帐户页面

就其本质而言,用户的个人资料或帐户页面通常包含敏感信息,例如用户的电子邮件地址、电话号码、API 密钥等。由于用户通常只能访问自己的帐户页面,因此这本身并不表示存在漏洞。但是,某些网站包含逻辑缺陷,可能允许攻击者利用这些页面来查看其他用户的数据。

例如,考虑一个网站,它根据user参数确定要加载哪个用户的帐户页面。

GET /user/personal-info?user=carlos

大多数网站都会采取措施防止攻击者简单地更改此参数以访问任意用户的帐户页面。然而,有时加载单个数据项的逻辑并不那么健壮。

攻击者可能无法完全加载其他用户的帐户页面,但例如,用于获取和呈现用户注册电子邮件地址的逻辑可能不会检查该user参数是否与当前登录的用户匹配。在这种情况下,简单地更改user参数将允许攻击者在他们自己的帐户页面上显示任意用户的电子邮件地址。

当我们讨论访问控制和IDOR漏洞时,我们将更详细地研究这些类型的漏洞。

通过备份文件泄露源代码

获取源代码访问权限使攻击者更容易了解应用程序的行为并构建高强度攻击。敏感数据有时甚至在源代码中进行了硬编码。这方面的典型示例包括用于访问后端组件的 API 密钥和凭据。

如果您可以确定正在使用特定的开源技术,则可以轻松访问有限数量的源代码。

有时,甚至可能导致网站暴露自己的源代码。在绘制网站时,您可能会发现某些源代码文件被明确引用。不幸的是,请求它们通常不会显示代码本身。当服务器处理具有特定扩展名的文件时,例如.php,它通常会执行代码,而不是简单地将其作为文本发送给客户端。但是,在某些情况下,您可以欺骗网站返回文件的内容。例如,文本编辑器经常在编辑原始文件时生成临时备份文件。这些临时文件通常以某种方式表示,例如通过附加波浪号 (~) 到文件名或添加不同的文件扩展名。使用备份文件扩展名请求代码文件有时可以让您在响应中读取文件的内容。

一旦攻击者可以访问源代码,这可能是朝着能够识别和利用其他几乎不可能的其他漏洞迈出的一大步。一个这样的例子是不安全的反序列化。我们稍后将在专门的主题中查看此漏洞。

配置不安全导致信息泄露

由于配置不当,网站有时容易受到攻击。由于第三方技术的广泛使用,这种情况尤为常见,其大量配置选项不一定为实施人员所熟知。

在其他情况下,开发人员可能会忘记禁用生产环境中的各种调试选项。例如,HTTPTRACE方法是为诊断目的而设计的。如果启用,Web 服务器将TRACE通过在响应中回显收到的确切请求来响应使用该方法的请求。这种行为通常是无害的,但偶尔会导致信息泄露,例如可能被反向代理附加到请求的内部身份验证标头的名称。

版本控制历史

几乎所有网站都是使用某种形式的版本控制系统开发的,例如 Git。默认情况下,Git 项目将其所有版本控制数据存储在名为.git. 有时,网站会在生产环境中公开此目录。在这种情况下,您可以通过简单地浏览到 来访问它/.git。

虽然手动浏览原始文件结构和内容通常是不切实际的,但有多种方法可以下载整个.git目录。然后,您可以使用本地安装的 Git 打开它以访问网站的版本控制历史记录。这可能包括包含已提交更改和其他有趣信息的日志。

这可能无法让您访问完整的源代码,但比较差异将允许您阅读小代码片段。与任何源代码一样,您可能还会在某些更改的行中发现硬编码的敏感数据。

posted @ 2021-08-24 10:41  Zeker62  阅读(95)  评论(0编辑  收藏  举报