在本节中,将讲解一些信息泄露的技术和工具,通过这些技术和工具来帮助识别各种情况下的信息泄露,另外通过一些试验场景来进行练习。
如何测试信息泄露漏洞?
一般来说,在测试期间视野不要太窄,应该避免过于狭隘地关注特定漏洞。敏感数据可能会在各种地方泄露,因此重要的是不要错过可能有用的任何内容。
在测试其他内容时,经常会发现敏感数据,一项关键技能是能够随时随地识别有趣的信息。
下面是一些高级技术和工具的示例,可以使用它们来帮助在测试期间识别信息泄露漏洞:
◆模糊测试
◆使用扫描工具
◆使用Burp其他工具
◆工程信息响应
模糊测试
如果发现有趣的参数,可以尝试提交意外的数据类型和特制的模糊字符串,看看有什么效果。
尽管响应有时会泄露明确的信息,但通过这些信息可以发现应用程序的行为。例如,处理请求所用时间的微小差异等。
即使错误消息的内容没有透露任何内容,有时遇到一个错误案例而不是另一个错误案例这一事实本身就是有用的信息。
我们可以使用自动化攻击工具执行这个过程的大部分内容,有以下几个好处:
◆将有效负载添加到参数中,并使用预先构建的模糊字符串字典快速连续测试大量不同的输入。
◆通过比较HTTP状态码、响应时间、长度等,轻松识别响应差异。
◆使用grep匹配规则快速识别关键字的出现,例如错误、无效、select、sql等。
◆使用grep提取规则来提取和比较响应中有趣项目的内容。
使用扫描工具
可以使用各种自动化的扫描工具,比如Burp Scanner等。这些工具可以提供实时扫描或爬虫的功能,例如Burp Scanner可以在响应中发现敏感信息。
使用Burp其他工具
Burp提供了集中参与工具,我们可以使用这些工具更轻松地在目标网站中找到有趣的信息。
可以通过右键点转到"Engagement tools"
◆Find references:查找评论。
使用此工具快速提取在所选项目中找到任何开发人员评论,它还提供选项卡以立即访问找到每个评论的HTTP请求和响应。
◆Discover content:发现目录
可以使用此工具来识别未与网站可见内容链接的其他目录和功能,这对于查找不一定会自动出现在站点中的其他目录文件很有用。
工程信息响应
在我们进行正常测试工作流程时,冗长的错误信息有时会泄露有意思的信息。但是,通过根据输入而变化的错误消息,更进一步的是,能够操纵网站以通过错误信息提取任意数据。
根据不同的特定情况,有许多方法可以做到这一点,一个常见的示例是使应用程序逻辑尝试对特定数据项执行无效操作。
例如,提交无效的参数值可能会导致堆栈跟踪或包含有趣的调试响应,有时可能会导致响应中的错误消息泄露所需数据的值。
信息泄露的常见来源
信息泄露可能发生在网站内的各种环境中,下面这些是敏感信息泄露常见的一些位置示例:
◆网络爬虫文件
◆目录列表
◆开发者评论
◆错误信息
◆调试数据
◆用户账户页面
◆备份文件
◆不安全的配置
◆历史版本控制
网络爬虫的文件
许多网站在/robots.txt和/sitemap.xml中提供文件,以帮助爬虫浏览他们的网站。这些文件通常会列出爬虫应跳过的特定目录,比如包含敏感信息的目录。
由于这些文件通常不会从网站内链接,它们可能不会出现在Burp的站点地图中。但是值得尝试手动导航到/robots.txt或/sitemap.xml以查看是否有任何用处。
目录列表
可以将Web服务器配置为自动列出不存在索引的目录内容,这可以帮助攻击者快速识别给定路径上的资源,并直接分析和攻击这些资源。尤其增加了目录中不打算供用户访问的敏感文件的泄露,例如临时文件和故障转储。
目录列表本身不一定是安全漏洞。但是,如果网站也没有实施适当的访问控制,那么以这种方式泄露敏感资源的位置显示是一个问题。
开发者评论
在开发过程中,有时会将内嵌HTML注释添加到标记中。在将更改部署到生产环境之前,通常会删除这些注释。但是,有时可能会忘记、遗漏评论,甚至故意留下评论,因为有人完全没有意识到安全隐患。
尽管这些评论在呈现的页面上不可见,但可以使用Burp甚至浏览器的内置开发人员工具轻松访问他们。
有时,这些评论包含对攻击者有用的信息。例如,它们可能暗示隐藏目录的存在或提供有关应用逻辑的线索。
错误信息
信息泄露最常见原因之一是冗长的错误信息。作为一般规则,我们应该密切注意在审核期间遇到的所有错误消息。
错误消息的内容可以揭示有关给定参数预期的输入或数据类型的信息,这可以通过识别可利用的参数来帮助缩小攻击范围,甚至可以防止浪费时间尝试注入根本不起作用的有效负载。
详细的错误消息还可以提供有关网站使用不同技术的信息。例如,可能会明确命名网站正在使用的模板引擎、数据库类型或服务器,以及其版本号。此信息可能很有用,因为可以通过版本搜索任何已记录的漏洞。同样,可以检查是否有任何常见的配置错误或可以利用的危险默认配置,其中有一些可能会在官方稳文档中突出显示。
攻击者可能还会发现该网站正在使用某种开源框架,在这种情况,可以研究公开可用的源代码,构建漏洞利用条件。
错误消息之间的差异还可以揭示幕后发生的不同应用程序行为,许多技术手段都会观察错误消息的差异,例如SQL注入、用户名枚举等。
场景试验-业务规则执行有缺陷:
https://portswigger.net/web-security/information-disclosure/exploiting/lab-infoleak-in-error-messages
场景说明:
这个试验场景的详细错误消息表明它正在使用易受攻击的第三方框架版本。
试验目的:
要完成这个试验,需要获取并提交此框架的版本号。
攻击过程:
①随便访问个产品页面,随后将访问这个页面的请求发送给Repeater。
②在Repeater中构造下请求,把productID改成字符串,然后发送
③把框架的版本信息在试验最上方的入口提交,完成本试验。
试验小结:
这个试验主要是对参数变化造成异常,通过返回的错误消息来判断服务器具体的版本信息,一般要阻止服务器直接将内部错误返回给用户,对用户返回统一的错误报告即可避免信息泄露。
SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-响应队列中毒
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):信息泄露漏洞-发现和利用(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论