BurpWeb安全学院之敏感信息泄露

这是burpsuite官网的免费优质实验.php

实验室地址 https://portswigger.net/web-security/information-disclosurehtml

仅为本人学习记录文章android

简单介绍

信息泄露指网站无心向用户泄露敏感信息.可能包括如下内容:git

  • 有关其余用户私密数据的,财务信息,我的身份信息等
  • 敏感的商业数据
  • 有关网站技术细节,架构,如源代码等

这种泄露多是不慎泄露给浏览该网站信息用户的,也有多是攻击者经过恶意的交互从网站得到数据.程序员

一些敏感信息泄露的示例:web

  • 经过robots.txt泄露网站隐藏目录,文件.或者站点结构
  • 网站站点的备份文件未删除致使的泄露,可能会泄露网站源代码
  • 没有正确处理网站的一些错误消息,在错误消息中泄露数据库表,字段等
  • 一些高度敏感的用户信息,银行帐号等泄露
  • 在源代码中泄露数据库帐号密码,等等(GitHub)
  • 网站某些程序的细微差异提示是否存在某些资源,用户名

敏感信息泄露的产生缘由可大体归类以下几点:数据库

  • 未删除公开内容中的敏感信息.(如开发人员的注释)
  • 网站不安全的配置(如,报错信息过于具体,网站开发时留下的调试网站功能)
  • 应用程序设计上的缺陷

如何防止信息泄露?编程

  • 网站开发人员要明确哪些信息是敏感信息缓存

  • 针对错误消息正确处理安全

  • 检查网站开发环境中的任何调试或者诊断功能是否禁用

  • 了解站点所使用的第三方技术的配置设置与安全隐患.花时间禁用实际上不须要的任何功能和设置

下面将介绍一些关于敏感信息泄露挖掘的思路

爬虫文件

像robots.txt, sitemap.xml

这些文件会列出特定目录不让爬虫爬取,由于它们可能包含敏感信息

在burpsuite的sitemap里面可能看不到它们,须要手动测试一下,看是否存在有用的东西

目录信息泄露

有的网站由于不当的配置可能暴露了网站目录

(图片来源于网络)

可能泄露一些开发者不但愿用户访问的文件

泄露敏感资源的存在与位置

注释或js文件

开发过程当中,开发者可能在HTML中写有关敏感信息的注释.

部署到生成文件前,一般会删除.可是可能有时会由于有些人没有安全意识而忘记.

也有多是js代码会保留一些敏感信息

实验:

在这个实验中,咱们查看HTML源代码.发现下面的js代码

若是访问用户是管理员,将在页面上增长一个超连接 Admin panel 在. /admin-f6zfiz

若是不看源代码,经过目录爆破很难发现.

同时,该网站的访问控制也没有作好,咱们能够轻松进入控制页面

删除Carlos用户

错误消息

信息泄露的最多见缘由之一是冗长的错误消息。

您应密切注意测试期间遇到的全部错误消息。

错误消息可能提醒测试人员应该输入什么消息或者什么数据类型的消息,这能够帮助咱们识别可利用的参数来缩小攻击范围

详细的错误消息还能够提供有关网站使用的技术信息 .如数据库类型,模板类型,服务器版本号等.

您可能还会发现该网站正在使用某种开源框架 , 在这种状况下,您能够下载研究源代码,可能有意外收获

错误消息对SQL注入,用户名枚举等都很关键.

实验:

咱们尝试修改id

引起报错能够发现该站点使用了Apache Struts 2 2.3.31

搜索能够发现这个版本存在一个Struts 2 远程代码执行漏洞.

但在这个实验不用尝试,点击 Submit solution 将发现填进去便可过关

调试数据

出于调试目的,许多网站会生成自定义错误消息和日志,其中包含有关应用程序行为的大量信息

尽管此信息在开发过程当中颇有用,但若是在生产环境中泄漏,则对攻击者也很是有用。

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

  • 能够经过用户输入操做的关键会话变量的值
  • web中间件的主机名和登陆凭据
  • 服务器上的文件和目录名称
  • 用于加密经过客户端传输的数据的密钥

调试信息有时可能会记录在单独的文件中。

实验:

在这个实验里,经过burpsuite的sitemap就能够发现,泄露了phpinfo页面

phpinfo就泄露了不少信息,包括 SECRET_KEY

这个值是某些加密的盐值(在不安全的反序列化一节中有用到)

在这提交secret_key值就能够过关

越权访问

用户的我的资料或“个人账户”页面一般包含敏感信息 , 例如用户的电子邮件地址,电话号码,API密钥等。

因为用户一般只能访问本身的账户页面,所以这自己并不表示漏洞。可是,某些网站包含逻辑缺陷,这些缺陷可能使攻击者能够利用这些页面来查看其余用户的数据。

例如,考虑一个基于user参数肯定要加载哪一个用户的账户页面的网站。

GET /user/personal-info?user=carlos

实验:

在帐户页面有我的的API Key

可是下面是my-account?id=wiener

尝试修改成carlos

burp抓包修改

以前的wiener的API key NczbKj9I0GfmU6Q9KnA5FLpKfckLQaxU

若是直接访问会重定向,下面的sYtJ1hbZ0t9Vv884PoCQeQRE3nRTzdMa就是carlos的API key

直接提交carlos的API key就ok

备份文件

得到源代码访问权限使攻击者更容易理解应用程序的行为并构造高严重性攻击。

敏感数据有时甚至被写在在源代码中,如数据库IP,密码(程序员提交到GitHub的开源项目)

有时候,网站自身可能因为某些缘由,泄露其源代码:

好比用Vim编程,在修改文件后 系统会自动生成一个带~的备份文件 , 某些状况下能够对其下载进行查看;

还有一些文件备份会在文件后面加上.bak

以下面的两种状况:

泄露了目录信息

以及备份文件信息

这些均可以经过burpsuite的爬虫爬出来

若是查看robots.txt

能够发现它禁止爬取backup目录下的文件,正好和前面描述的相符

而在源码中又能够发现敏感信息

(提交e4634c3retqjcb9wov4ci2bmyuybz8ud过关)

Vim备份文件泄露

配置不安全致使信息泄露

因为配置不当,网站有时容易受到攻击。

又因为第三方技术的普遍使用,这种状况尤其广泛,第三方技术的不少配置选项并不必定被使用它们的人员所理解。

在其余状况下,开发人员可能会忘记在生产环境中禁用各类调试选项

例如,HTTP TRACE方法被设计用于诊断目的 , TRACE容许顾客看到经过请求链的那一端在接收了些什么并使用那些数据来测试和诊断信息状况,开启可能致使某些危害

访问admin页面

同时该网站TRACE方法又开启了

X-Custom-IP-Authorization为咱们的请求IP

结合这两条能够知道,web站点管理员在开发网站时设置了,本地不须要登陆也能够进入admin页面

可是,咱们能够欺骗服务器咱们是127.0.0.1

这样设置后再次访问

能够成功删除 Carlos 的帐号

TRACE探测

版本控制历史

Git基础请参考 https://www.runoob.com/w3cnote/android-tutorial-git-repo-operate.html

几乎全部网站都是使用某种形式的版本控制系统(例如Git)开发的

默认状况下,Git项目将其全部版本控制数据存储在名为.git的文件夹中

有时,网站在生产环境中公开此目录。在这种状况下,您可能只需浏览到便可访问它/.git

并且还能够下载到本地,用本地安装的Git打开它 以访问网站的版本控制历史记录

这可能没法让您访问完整的源代码, 可是您能够阅读更改的代码片断

这仍然可能存在某些敏感数据

实验:

访问/.git

咱们能够下载到本地查看

wget -r https://ac931f6d1f3043de818db753009500ba.web-security-academy.net/.git

git status命令查看信息

能够发现,admin.conf和admin_panel.php被管理员从目录删除了

可是"还没有缓存以备提交的变动",说明并无从当前版本删除.

使用下面的命令恢复到当前版本

git reset --hard HEAD

cat admin.conf发现没有管理员密码!...

git log 查看历史版本信息

发现帐号密码上一版被删除了..

再恢复上一版

git reset --hard HEAD^

拿到管理员密码,administrator/7e4yhifp8ni8olt5aap2 登陆后台,删除指定用户便可.

相关文章
相关标签/搜索