【web-利用信息泄露】(10.2)收集公布的信息、使用推论
目录
一、收集公布的信息
1.1、简介:
1.2、过程:
二、使用推论
2.1、简介:
2.2、过程:
一、收集公布的信息
1.1、简介:
除在错误消息中泄露有用的信息外,Web应用程序直接公布的信息也是它披露敏感数据的另一个主要源头,由于以下原因, 应用程序可能会公布对攻击者有利的信息
A、公布的信息在设计上属于应用程序核心功能的一部分
B、公布的信息会无意中给其他功能造成负面影响
C、由仍然存在于当前应用程序中的调试功能泄露信息
D、由于某个漏洞(如访问控制不完善)而导致信息泄露
应用程序可能向用户公布的敏感信息通店包括以下几项
A、有效用户名, 账号与文档ID列表
B、用户个人资料, 包括用户角色与权限、最后登录日期与账户状态
C、用户当前使用的密码(该密码在屏幕上隐藏显示,但却出现在页面源代码中)
D、包含在日志文件中的信息,如用户名、URL 、执行的操作, 会话令牌与数据库查询
E、客户端HTML源代码中与应用程序有关的细节,如作为注释处理的链接或表单字段以及关于漏洞的注释
1.2、过程:
1、检查应用程序解析过程中得到的结果,确定可用于获取有用信息的所有服务器端功能与客户端数据。
2、在应用程序中确定服务器向浏览器返回密码或信用卡资料等敏感数据的所有位置。即使这些信息在屏幕上隐藏显示,但仍然可以在服务器的响应中看到这些信息。如果发现其他适当的漏洞,如访问控制或会话处理方面的漏洞, 就可以利用这种行为获取属于其他应用程序
用户的信息。3、如果已经确定任何提取敏感信息的方法,使用自动攻击解析过程
二、使用推论
2.1、简介:
1、有些情况下,应用程序可能不会直接泄露任何数据,但可以根据它的行为准确推断出有用的信息
2、在探查其他类型漏洞的过程中,遇到过许多以这种方式泄露信息的情况:
A、注册功能允许在选择已经存在的用户名时根据出现的错误消息枚举出已注册的用户名
B、搜索引擎允许推断出未获授权就可直接查看的编入索引的文档内容
C、在盲目SQL注入漏洞中,可以通过给一个现有的查询增加一个二进制条件, 一次一位地提取信息
D、.NET中的"填充提示"攻击,在这种攻击中,攻击者可以通过向服务器发送一系列请求并观察哪些请求在解密期间导致错误,从而解密任何字符串
3、另外根据某种对攻击者有利的打事实,如果应用程序执行不同操作所用的时间各不相同, 那么应用程序行为上的这种细微差异也会导致信息泄露,这种差异由以下原因造成:
A、许多复杂的大型应用程序需要从数据库、消息队列与大型主机等后端系统中提取数据,为提高性能,一些应用程序缓存频繁使用的信息。同样,一些应用程序采用一种延迟加载模式,仅在需要时加载对象和数据。在这种情况下,应用程序会从服务器的本地缓存中迅速提取出最近访问的数据,而从相关后端系统中相对缓慢地提取出其他数据。
电子银行应用程序常常以这种方式运作,与活动账户相比,访问一个休眠账户通常需要更长的时间,就可以利用这种行为枚举出其他用户最近访问的账户
B、有时应用程序处理某个特殊请求所花的时间取决于用户提交的数据是否有效。例如,如果向登录机制提交一个有效的用户名,应用程序就会执行各种数据库查询,获取账户信息并更新审计日志,同时执行需要进行大量计算的操作,根据保存的散列确认用户提交的密码。如果攻击者能够探测到这种时间差异,就能利用它枚举有效的用户名
C、一些应用程序可能会根据用户输入执行一项操作,如果用户提交的某个数据无效,就会造成超时,如果某应用程序使用cookie保存一个前端负载均衡器之内的主机地址,攻击者就可以操纵这个地址,扫描组织内部网络中的Web服务器。如果提交的服务器地址不属于应用程序基础设施的范围,应用程序就会立即返回一个错误。
如果提交一个不存在的地址,那么尝试连接这个地址就会造成超时,然后应用程序再返回与上一种情况相同的常规错误,攻击者可以利用bp结果表中的响应计时器进行这种测试。默认情况下这些列隐藏不可见,但可通过Columns菜单显示
2.2、过程:
1、应用程序响应时间上的差异可能非常微小,难以探测。通常只有在向关键区域提交重要的数据以及所执行的处理很可能会导致时间差异时,才值得在应用程序中探查这种行为。
2、为测试某个特殊的功能,编辑两个列表,其中分别包含几个已知有效(或最近被访问)的数据和已知无效(或休眠状态)的数据。以可控制的方式提出包括这两个列表中的每一个数据的请求,一次仅提出一个请求,然后监控应用程序响应每个请求所用的时间。确定数锯的状态与响应时间之间是否存在任何关联
3、可以使用Burp lntruder自动完成这项任务,对于每一个生成的请求,Intruder将自动记录应用程序响应前所用的时间以及完成响应所用的时间,还可以按这些属性对结果表进行分类,迅速确定明显关联