信息泄露漏洞

前言:信息泄露包括的内容很广泛,很多漏洞都可以归为信息泄露类的漏洞,所以这类漏洞需要去细细消化其中的每个技术.
本篇笔记主要参考burp学院的信息泄露相关内容

什么是信息泄露

是指网站无意间向用户泄露敏感信息。根据上下文,网站可能会将各种信息泄漏给潜在的攻击者,包括:

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

泄露敏感的用户或业务数据的危险相当明显,但泄露技术信息有时可能同样严重。尽管某些信息用途有限,但它可能是暴露其他攻击面的起点,其中可能包含其他有趣的漏洞。
有时,敏感信息可能会不慎泄露给仅以正常方式浏览网站的用户。但是,更常见的是,攻击者需要通过以意外或恶意的方式与网站进行交互来引发信息泄露。然后,他们将仔细研究网站的响应,以尝试找出有趣的行为。

信息泄露的例子

信息公开的一些基本示例如下:

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

信息泄露漏洞原理

由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。 比如:

  • 通过访问url下的目录,可以直接列出目录下的文件列表;
  • 输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
  • 前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;

类似以上这些情况,我们成为敏感信息泄露。敏感信息泄露虽然一直被评为危害比较低的漏洞,但这些敏感信息往往给攻击着实施进一步的攻击提供很大的帮助,甚至“离谱”的敏感信息泄露也会直接造成严重的损失。 因此,在web应用的开发上,除了要进行安全的代码编写,也需要注意对敏感信息的合理处理。

寻找信息泄露漏洞

信息泄露可以在网站内的各种情况下发生。以下是一些常见的地方示例。

网络爬虫文件

许多网站都提供文件/robots.txt和/sitemap.xml帮助搜索引擎爬取其网站。其中,这些文件通常列出爬虫应跳过的特定目录,例如,因为它们可能包含敏感信息。
尝试查看/robots.txt或/sitemap.xml是否发现有用的东西,就有可能找到这些敏感信息。

Sitemap

Sitemap 可让您告诉google关于您网页的信息(您认为哪些网页最重要,这些网页的更改频率如何)。Sitemap是对原来robots.txt的扩展,它使用XML格式来记录整个网站的信息并供Google读取,使搜索引擎能更快更全面的收录网站的内容。

目录浏览

目录浏览漏洞是由于网站存在配置缺陷,存在目录可浏览漏洞,这会导致网站很多隐私文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以更容易得到网站权限,导致网站被黑。

探测方法

1.直接访问Web应用存在的一些目录,如果返回文件列表信息,证明存在此漏洞。
信息泄露漏洞_第1张图片

2.可以利用Web漏洞扫描器扫描Web应用进行检测,也可通过搜索网站标题包含"index of"关键词的网站进行访问。
GoogleHacking 语法:
intext:Index of /

风险等级

【高危】:目录可以浏览,泄露包含密码、个人信息等敏感文件。
【低危】:目录可以浏览,未泄露包含密码、个人信息等敏感文件。

修复方案

目前存在该漏洞的常见中间件为apache和IIS,以下列出其相关的修复方式:
1、 IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS。
2、 Apache中关闭目录浏览功能:打开Apache配置文件httpd.conf,查找“Options Indexes FollowSymLinks”,修改为“ Options -Indexes”(减号表示取消,保存退出,重启Apache。)
3、 Nginx中默认不会开启目录浏览功能,若您发现当前已开启该功能,可以编辑nginx.conf文件,删除如下两行:autoindex on;autoindex_exact_size on;或者将autoindex设置为off.最后重启Nginx。

开发者注释

在开发过程中,有时会将行内HTML注释添加到标记中。在将更改部署到生产环境之前,通常会删除这些注释。但是,有时会因为某些人没有完全意识到安全隐患而忘记删除注释,尽管这些注释在呈现的页面上不可见,但是可以通过网页源代码查看。
有时,这些注释包含对攻击者有用的信息。例如,它们可能暗示隐藏目录的存在或提供有关应用程序逻辑的线索。
这里最简单的就是开发人员在注释地方留下一个测试帐号…

报错信息

不安全的错误处理方法可能泄露系统或应用的敏感信息,手工测试的过程中应留意各类错误信息,如果发现错误信息中包含系统或应用敏感信息,则进行记录。
详细的错误消息还可以提供有关网站使用的不同技术的信息。例如,他们可能会明确命名网站正在使用的模板引擎,数据库类型或服务器,以及其版本号。该信息很有用,因为您可以轻松地搜索该版本可能存在的漏洞。同样,可以检查是否存在可以利用的常见配置错误或危险的默认设置。
错误消息之间的差异还可以揭示幕后发生的不同应用程序行为。观察错误消息中的差异是许多技术的关键方面,例如SQL注入,用户名枚举等。

调试信息

出于调试目的,许多网站会生成自定义错误消息和日志,其中包含有关应用程序行为的大量信息。尽管此信息在开发过程中很有用,但如果在生产环境中泄漏,则对攻击者也非常有用。最常用比如网站会把phpinfo页面先保留下来用于调试,但是后期忘记删除就会造成信息泄露问题.
调试消息有时可能包含用于发起攻击的重要信息,包括:

  • 可以通过用户输入操作的关键会话变量的值
  • 后端组件的主机名和凭据
  • 服务器上的文件和目录名称
  • 用于加密通过客户端传输的数据的密钥
  • 调试信息有时可能会记录在单独的文件中。如果攻击者能够访问此文件,则它可以用作了解应用程序运行时状态的有用参考。它还可以提供一些线索,说明它们如何提供精心设计的输入以操纵应用程序状态并控制接收到的信息。

用户帐号页面

就其本质而言,用户的个人资料或“我的帐户”页面通常包含敏感信息,例如用户的电子邮件地址,电话号码,API密钥等。由于用户通常只能访问自己的帐户页面,因此这本身并不表示漏洞。但是,某些网站包含逻辑缺陷,这些缺陷可能使攻击者可以利用这些页面来查看其他用户的数据。
例如,考虑一个基于user参数确定要加载哪个用户的帐户页面的网站。
GET /user/personal-info?user=wiener
通过修改user参数就可以访问任意用户

配置不安全

由于配置不当,网站有时容易受到攻击。由于第三方技术的广泛使用,这种情况尤为普遍,第三方技术的广泛配置选项并不一定被实施它们的人员所理解。
在其他情况下,开发人员可能会忘记在生产环境中禁用各种调试选项。例如,HTTP TRACE方法被设计用于诊断目的。如果启用,Web服务器将TRACE通过在响应中回显收到的确切请求来响应使用该方法的请求。此行为通常是无害的,但偶尔会导致信息泄露,例如内部身份验证标头的名称,该名称可能由反向代理附加到请求中。

历史控制版本泄露信息

git泄露漏洞

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
1.危害
攻击者可以利用该漏洞下载git文件夹里的所有内容。如果文件夹内有敏感信息比如站点源码、数据库账户密码等,攻击者可能直接控制服务器。
2.利用
使用工具GitHack
GitHack.py http://www.openssl.org/.git/
3.防御
及时删除.git文件夹
发布页面时不要上传.git文件夹。

参考: burpsuite 官网信息泄露教学资料

你可能感兴趣的:(信息泄露漏洞,安全漏洞)