侧边栏壁纸
博主头像
咿呀咿呀

你的脚步太乱,所以行程有限

  • 累计撰写 29 篇文章
  • 累计创建 4 个标签
  • 累计收到 2 条评论
标签搜索

信息泄露

咿呀咿呀
2022-04-16 / 0 评论 / 0 点赞 / 252 阅读 / 5,393 字
温馨提示:
本文最后更新于 2022-04-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

所有内容,来自burpsuite官方靶场(portswigger)

信息泄露漏洞


image-20211012101834716

学习发现和利用信息泄露是任何测试人员的一项重要技能

什么是信息泄露?

​ 信息泄露是指网站无意中向用户泄露敏感信息。网站可能会向潜在攻击者泄露各种信息,包括:

  • 有关其他用户的数据,例如用户名或财务信息
  • 敏感的商业或商业数据
  • 关于网站及其基础设施的技术细节

​ 泄露敏感用户或业务数据的危险是相当明显的,但泄露技术信息有时也同样严重。尽管其中一些信息的用途有限,但它可能成为暴露额外攻击面的起点,其中可能包含其他有趣的漏洞。在尝试构建复杂的、高严重性的攻击时,能够收集到的知识甚至可以提供拼图的缺失部分。

​ 有时,敏感信息可能会不小心泄露给只是以正常方式浏览网站的用户。然而,更常见的是,攻击者需要通过以意想不到的或恶意的方式与网站交互来引发信息泄露。然后,他们将仔细研究网站的响应,以尝试识别有趣的行为。

信息泄露的例子

信息泄露的一些基本示例如下:

  • 通过robots.txt文件或目录列表显示 隐藏目录的名称、结构和内容
  • 通过临时备份提供对源代码文件的访问
  • 在错误消息中明确提及数据库表或列名称
  • 不必要地暴露高度敏感的信息,例如信用卡详细信息
  • 在源代码中硬编码 API 密钥、IP 地址、数据库凭据等
  • 通过应用程序行为的细微差异暗示资源、用户名等的存在或不存在

如何发现和利用信息泄露

一般来说,重要的是不要在测试期间发展“隧道视野”。换句话说,应该避免过于狭隘地关注特定漏洞。敏感数据可能会在各种地方泄露,因此重要的是不要错过以后可能有用的任何内容。在测试其他内容时,您经常会发现敏感数据。一项关键技能是能够随时随地识别有趣的信息。

有一些技术或工具可以帮助我们在测试期间识别信息泄露

  • fuzz
  • Burp Scanner
  • 使用Burp的扩展工具
fuzz

如果发现有趣的参数,可以尝试提交意外的数据类型和特制的模糊字符串,看看有什么效果。密切关注; 尽管响应有时会明确披露有趣的信息,但它们也可以更巧妙地暗示应用程序的行为。例如,这可能是处理请求所用时间的微小差异。即使错误消息的内容没有透露任何内容,有时遇到一个错误案例而不是另一个错误案例这一事实本身就是有用的信息。

可以使用 Burp Intruder 等工具自动执行此过程的大部分内容。这提供了几个好处。最值得注意的是:

  • 将有效负载位置添加到参数中,并使用预先构建的模糊字符串词表快速连续测试大量不同的输入。
  • 通过比较 HTTP 状态代码、响应时间、长度等,轻松识别响应差异。
  • 使用 grep 匹配规则快速识别关键字的出现,例如error, invalid, SELECT,SQL等。
  • 应用 grep 提取规则来提取和比较响应中有趣项目的内容。
Burp Scanner

Burp Suite Professional用户可以使用 Burp Scanner。这为您在浏览时审核项目提供了实时扫描功能,或者您可以安排自动扫描以代表您对目标站点进行爬网和审核。这两种方法都会自动为您标记许多信息泄露漏洞。例如,如果 Burp Scanner 在响应中发现敏感信息(例如私钥、电子邮件地址和信用卡号),则会提醒您。它还将识别任何备份文件、目录列表等。

工程信息响应

在进行正常的测试工作流程时,冗长的错误消息有时会泄露有趣的信息。但是,通过研究错误消息根据输入而变化的方式,可以更进一步。在某些情况下,将能够操纵网站以通过错误消息提取任意数据。

根据遇到的特定情况,有许多方法可以做到这一点。一个常见的示例是使应用程序逻辑尝试对特定数据项执行无效操作。例如,提交无效的参数值可能会导致堆栈跟踪或包含有趣细节的调试响应。有时可能会导致错误消息在响应中披露所需数据的值。

信息泄露的常见来源

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

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

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

目录列表

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

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

开发者评论

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

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

错误信息

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

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

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

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

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

LAB:错误信息中的信息泄露

image-20211012103152515

调试数据

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

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

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

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

LAB:调试页面信息公开

image-20211012105309938

用户账户页面

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

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

GET /user/personal-info?user=carlos

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

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

通过备份文件泄露源代码

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

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

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

LAB:通过备份文件泄露代码

image-20211012111257076

image-20211012111326743

配置不安全导致信息泄露

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

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

LAB:通过信息泄露绕过认证

image-20211012112200635

只有本地用户才能访问/admin

image-20211012112312704

image-20211012112429194

image-20211012112458554

tip:TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容(可能会附加路由中间的代理服务器的信息),由于该方法原样返回客户端提交的任意数据,因此,可用来进行跨站脚本(XSS)攻击,这种攻击方式又称为跨站跟踪攻击(XST)。

版本控制历史

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

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

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

LAB:版本控制历史中的信息泄露

image-20211012142957926

image-20211012142948660

找到上一次提交的admin paaaword

image-20211012144230633

信息泄露是如何产生的?

信息披露漏洞可能以无数不同的方式出现,但大致可以分为以下几类:

  • 未能从公共内容中删除内部内容。例如,标记中的开发人员评论有时对生产环境中的用户可见。
  • 网站和相关技术的不安全配置。例如,未能禁用调试和诊断功能有时可以为攻击者提供有用的工具来帮助他们获取敏感信息。默认配置也可能使网站容易受到攻击,例如,显示过于冗长的错误消息。
  • 有缺陷的应用程序设计和行为。例如,如果网站在出现不同的错误状态时返回不同的响应,这也可能允许攻击者枚举敏感数据,例如有效的用户凭据
信息泄露有什么影响?

​ 信息泄露漏洞可以产生直接和间接影响,具体取决于网站的目的以及攻击者能够获取的信息。在某些情况下,仅披露敏感信息的行为就会对受影响的各方产生重大影响。例如,一家网上商店泄露其客户的信用卡详细信息可能会产生严重的后果。

​ 另一方面,泄露技术信息,例如目录结构或正在使用的第三方框架,可能几乎没有直接影响。但是,如果落入坏人之手,这可能是构建任意数量的其他漏洞利用所需的关键信息。这种情况下的严重性取决于攻击者能够使用这些信息做什么。

如何评估信息泄露的严重性

​ 尽管最终影响可能非常严重,但只有在特定情况下,信息泄露本身才是一个严重的问题。在测试过程中,如果能够证明攻击者如何利用它做一些有害的事情,通常只会对技术信息的泄露感兴趣。

​ 例如,如果该版本已完全修补,则网站正在使用特定框架版本的知识的用途是有限的。但是,当网站使用包含已知漏洞的旧版本时,此信息变得很重要。在这种情况下,执行破坏性攻击可能就像应用公开记录的漏洞一样简单。

​ 当发现潜在的敏感信息被泄露时,运用常识很重要。在测试的许多网站上,很可能可以通过多种方式发现次要的技术细节。因此,主要关注点应该是泄露信息的影响和可利用性,而不仅仅是信息披露作为一个独立问题的存在。一个明显的例外是泄露的信息非常敏感,以至于它本身就值得关注。

如何防范信息泄露

由于信息泄露的发生方式多种多样,因此完全防止信息泄露非常棘手。但是,可以遵循一些通用的最佳实践来最大程度地降低此类漏洞潜入网站的风险。

  • 确保参与制作网站的每个人都完全了解哪些信息被视为敏感信息。有时,看似无害的信息对攻击者来说可能比人们意识到的要有用得多。突出显示这些危险有助于确保您的组织在一般情况下更安全地处理敏感信息。
  • 作为 QA 或构建过程的一部分,审计任何潜在信息泄露的代码。自动化一些相关任务应该相对容易,例如剥离开发人员评论。
  • 尽可能使用通用错误消息。不要向攻击者提供有关应用程序行为的不必要的线索。
  • 仔细检查在生产环境中是否禁用了任何调试或诊断功能。
  • 确保完全了解实施的任何第三方技术的配置设置和安全影响。花点时间调查并禁用您实际上不需要的任何功能和设置。
0

评论区