一、信息泄露漏洞
1、简述:
1、网站无意中向用户泄露敏感信息
例如:
有关其他用户的数据,如用户名或财务信息
敏感商业或业务数据
网站及其基础设施的技术细节
2、危害:
1、泄露敏感的用户或业务数据的危险是相当明显的,但泄露技术信息有时也会同样严重。尽管其中一些信息的用途有限,但它可能成为暴露其他攻击面的起点,这些攻击面可能包含其他有趣的漏洞。在尝试构建复杂、严重性高的攻击时,能够收集到的知识甚至可以提供拼图中缺失的部分。
2、有时敏感信息可能会被不小心泄露给那些只是以正常方式浏览网站的用户。然而,更常见的是,攻击者需要以意想不到的或恶意的方式与网站交互,以诱使信息泄露。然后他们会仔细研究网站的反应,试图找出有趣的行为。
3、示例:
1、显示隐藏目录的名称、结构和内容robots.txt文件或目录列表
2、通过临时备份提供源代码文件访问
3、在错误消息中明确提及数据库表名或列名
4、不必要地暴露高度敏感的信息,如信用卡详细信息
5、在源代码中硬编码API密钥、IP地址、数据库凭据等
6、通过应用程序行为的细微差别提示资源、用户名等的存在与否
4、漏洞的产生
信息泄露漏洞可能以无数种不同的方式出现,如:
1、未能从公共内容中删除内部内容。如标注中的开发人员注释有时对生产环境中的用户可见。
2、网站和相关技术的不安全配置。如未能禁用调试和诊断功能有时会为攻击者提供有用的工具,帮助他们获取敏感信息。默认配置也可能使网站易受攻击,例如,显示过于冗长的错误消息。
3、应用程序的设计和行为有缺陷。如网站在出现不同的错误状态时返回不同的响应,则攻击者还可以枚举敏感数据,例如有效的用户凭据
5、影响
1、用户数据:根据网站的目的以及攻击者能够获得的信息,信息泄露漏洞可能会产生直接和间接影响。在某些情况下,仅披露敏感信息的行为就可能对受影响方产生很大影响。如一家网店泄露顾客的信用卡详细信息,很可能会造成严重后果。
2、技术信息:泄漏技术信息,如目录结构或正在使用的第三方框架,可能几乎没有直接影响。但是,如果落入坏人之手,这可能是构建任何数量的其他攻击所需的关键信息。这种情况下的严重性取决于攻击者能够使用此信息执行的操作。
6、严重程度判定
1、有危害:虽然最终的影响可能非常严重,但只有在特定情况下,信息披露本身才是一个严重性很高的问题。在测试过程中,只有当能够证明攻击者如何利用技术信息进行有害操作时,才会对技术信息的公开感兴趣
2、存在漏洞:如一个网站使用的是一个特定的框架版本,并且该版本已经打了补丁,那么这个知识的用处就很有限。但当网站使用的是包含已知漏洞的旧版本时,此信息将变得非常重要。在这种情况下,执行破坏性攻击可能就像应用公开记录的利用漏洞攻击一样简单。
3、能利用:当发现潜在的敏感信息正在被泄露时,运用常识是非常重要的。在测试的许多网站上,很可能会以多种方式发现一些次要的技术细节。因此主要关注点应该是泄漏信息的影响和可利用性,而不仅仅是信息泄漏作为一个独立问题的存在。明显的例外是,当泄露的信息非常敏感,它本身就值得注意
二、发现和利用信息泄露漏洞
1、模糊测试
1、参数:如果发现了有趣的参数,可以尝试提交意外的数据类型和精心编制的模糊字符串,看看会产生什么效果。密切关注;尽管响应有时会显式地公开感兴趣的信息,但它们也可以更巧妙地暗示应用程序的行为。如这可能是处理请求所用时间的微小差异。即使错误消息的内容没有透露任何信息,有时遇到一个错误而不是另一个错误本身就是有用的信息。
2、工具:可以使用如Burp Intruder之类的工具自动执行此过程的大部分操作。这提供了几个好处。最值得注意的是:
1)将有效负载位置添加到参数中,并使用预先构建的模糊字符串单词列表来快速连续地测试大量不同的输入。
2)通过比较HTTP状态代码、响应时间、长度等,轻松识别响应中的差异。
3)使用grep匹配规则可以快速识别关键字的出现,例如error、invalid、SELECT、SQL等。
4)应用grep提取规则来提取和比较响应中感兴趣项的内容。
3、扩展:可以使用Logger++扩展(从BApp商店获得),除了记录来自Burp所有工具的请求和响应之外,它还定义高级过滤器来突出显示感兴趣的条目,可以帮助找到网站泄露的任何敏感数据。
2、使用BP扫描仪
1、扫描功能:BP套件专业用户有扫描仪,这为浏览时的审核项目提供了实时扫描功能,或者可以计划自动扫描以代表爬网和审核目标站点。这两种方法都会自动标记许多信息泄露漏洞。如Burp Scanner在响应中发现私钥、电子邮件地址和信用卡号等敏感信息,它将发出警报。它还将标识任何备份文件、目录列表等(一般是被动扫描,结合BP插件)
3、使用Burp的相关工具
1、Burp提供了相关工具,可以使用这些工具更轻松地在目标网站中找到感兴趣的信息,可以从上下文菜单访问相关工具-只需右键单击任何HTTP消息、Burp Proxy条目或站点地图中的项目,然后转到“相关工具”
1)检索:可以使用此工具查找选定项目中的任何表达式。可以使用各种高级搜索选项(如正则表达式搜索或否定搜索)微调结果。这对于快速查找感兴趣的特定关键字的出现(或缺失)非常有用。
2)查找注释:可以使用此工具快速提取在选定项目中找到的任何开发人员注释。它还提供了选项卡,用于即时访问找到每条评论的HTTP请求/响应周期。
3)发现内容:可以使用此工具识别未从网站可见内容链接的其他内容和功能。这对于查找不一定会自动出现在站点地图中的其他目录和文件非常有用。
4、工程信息响应
1、变换输入:当进行正常的测试工作流时,冗长的错误消息有时会泄露有趣的信息。但通过研究错误消息根据输入而变化的方式,可以更进一步。在某些情况下,将能够操纵网站,以便通过错误消息提取任意数据
2、特定场景:根据遇到的特定场景,有许多方法可以实现这一点。一个常见的示例是使应用程序逻辑尝试对特定数据项执行无效操作。如提交无效的参数值可能导致堆栈跟踪或调试响应包含有趣的详细信息,有时可能会导致错误消息泄漏响应中所需数据的值。
三、常见来源
1、示例:
Web爬网程序的文件
目录列表
开发人员评论
错误消息
调试数据
用户帐户
备份文件
不安全配置
版本控制
2、Web爬网程序的文件
1、配置文件:许多网站都在/robots. txt和/sitemap. xml中提供了文件,以帮助爬虫浏览其站点。其中,这些文件通常列出爬网程序应该跳过的特定目录,例如,因为它们可能包含敏感信息
2、手动寻找:由于这些文件通常不会从网站内部链接,因此它们可能不会立即出现在Burp的网站地图中。但是,手动导航到/robots. txt或/sitemap. xml,看看是否找到有用的内容,这是值得尝试的
3、目录列表
1、配置错误:Web服务器可以配置为自动列出没有索引页的目录的内容。这可以帮助攻击者快速识别给定路径上的资源,并直接分析和攻击这些资源。它尤其增加了目录中不希望用户访问的敏感文件(如临时文件和故障转储)的暴露。
2、访问控制:目录列表本身不一定是安全漏洞。但如果网站也未能实施适当的访问控制,以这种方式泄露敏感资源的存在和位置显然是一个问题
4、开发人员注释等
1、注释:在开发过程中,有时会向标记中添加内嵌HTML注释。这些注释通常在将更改部署到生产环境之前被删除。但注释有时可能会被忘记、错过,甚至是故意留下,因为有人没有完全意识到安全性的影响。虽然这些注释在呈现的页面上不可见,但可以使用Burp甚至浏览器的内置开发人员工具轻松访问它们。
2、危害:注释可能包含对攻击者有用的信息。如可能暗示隐藏目录的存在或提供有关应用程序逻辑的线索。
5、错误信息
1、常见情况:信息泄漏最常见的原因之一是冗长的错误消息。一般来说,应该密切注意在审核过程中遇到的所有错误消息。
2、作用:错误消息的内容可以揭示有关给定参数的预期输入或数据类型的信息。这可以通过识别可利用的参数来缩小攻击范围。甚至可以防止浪费时间尝试注入根本不起作用的有效负载。
3、详细的错误消息:可以提供有关网站正在使用的不同技术的信息。如可能显式地命名网站正在使用的模板引擎、数据库类型或服务器,沿着其版本号。此信息非常有用,因为可以轻松搜索此版本可能存在的任何记录在案的利用漏洞攻击。类似地可以检查是否存在任何可以利用的常见配置错误或危险的默认设置。正式文件中可能会强调其中一些建议。
4、第三方信息:可能还会发现该网站使用的是某种开源框架。在这种情况下,您可以研究公开的源代码,这是构建自己的攻击的宝贵资源。
5、行为特征:错误消息之间的差异还可以揭示后台发生的不同应用程序行为。观察错误消息中的差异是许多技术的关键方面,如SQL注入、用户名枚举等。
6、涉及实验:
实验1:错误消息中的信息泄漏
实验1:错误消息中的信息泄漏
信息:
输入类型错误导致的错误信息(数值型--->字符型)
part1:
点击一个商品进入
打开历史记录,GET传参product(与数据库有交互,且是数值类型)
GET /product?productId=1
part2:
将数据包发送到repeater
并将productId参数的值改为字符型
part3:
完成实验
单击"提交解答",然后输入2 2. 3. 31解答实验
6、调试数据
1、泄露原因:出于调试目的,许多网站生成自定义错误消息和日志,其中包含有关应用程序行为的大量信息。虽然此信息在开发过程中非常有用,但如果在生产环境中泄漏,它对攻击者也非常有用。
2、调试消息有时可能包含开发攻击的重要信息:
可通过用户输入操作的关键会话变量的值
后端组件的主机名和凭据
服务器上的文件名和目录名
用于加密通过客户端传输的数据的密钥
3、特殊文件:调试信息有时可能记录在单独的文件中。如果攻击者能够获得对此文件的访问权限,则它可以作为了解应用程序运行时状态的有用参考。它还可以提供一些线索,说明它们如何提供精心编制的输入来操纵应用程序状态和控制接收到的信息。
4、涉及实验:
实验2:调试页面信息泄露
实验2:调试页面信息泄露
数据包中带有注释
part1:
点击商品
HTTP历史记录中,刚刚产生的数据包
(主页包含一个HTML注释,其中包含一个名为“Debug”的链接)
part2:
选中目标后--->选择“Engagement tools”(相关工具)--->“Find comments”(搜索评论)
/cgi-bin/phpinfo. php
part3:
完成实验
…….web-security-academy.net/后面加上cgi-bin/phpinfo.php
显示了各种调试信息,包括SECRET_KEY环境变量
找到SECRET_KEY完成实验
6su4ojv0ok99zy4b2rjm9y7so520a3v3
单击“提交解答”,输入SECRET_KEY来解答实验