目录
最近看大佬的文章,发现了很对自己没有注意到的关于信息泄露的点,感谢大佬,这里参考大佬的文章在这里使用burpsuite的靶场来练习一下信息泄露相关的知识点和操作
靶场地址:
可以看到关于信息泄露的一共有5关卡,那么就分别来进行练习
第一关:错误消息中的信息披露
进入后介绍如下:
此实验室的详细错误消息显示,它使用的是第三方框架的易受攻击版本。若要求解实验室,请获取并提交此框架的版本号。
然后点击进入到靶场中可以看到如下页面:
根据提示,让我们去查看一下GET /product?productId=1
这里我使用burpsuite抓到该数据包后,发送到重放器中,然后发包,可以看到显示了第一个商品的信息
修改productid为2后会显示第二个商品的信息
但是当我将productid为1'后,可以看到页面报错了
但是这样并不是单纯的报错,而是显示了Apache Struts 2 2.3.31,那么我们是不是可以去查找一下对应版本的历史漏洞,进行下一步的利用了
所以说,这种将后端服务器组件相关的信息返回给用户是很危险的行为
然后将获取到的中间键信息提交:
成功通关
第二关:调试页面信息披露
来到第二关,是这样介绍的:
本实验包含一个调试页,用于公开有关应用程序的敏感信息。要求解实验室,请获取并提交SECRET_KEY环境变量。
这里补充一下调试数据泄露的知识点:
1、泄露原因:出于调试目的,许多网站生成自定义错误消息和日志,其中包含有关应用程序行为的大量信息。
虽然此信息在开发过程中非常有用,但如果在生产环境中泄漏,它对攻击者也非常有用。
2、调试消息有时可能包含开发攻击的重要信息: 可通过用户输入操作的关键会话变量的值 后端组件的主机名和凭据 服务器上的文件名和目录名 用于加密通过客户端传输的数据的密钥
进入到靶场后可以看到如下信息:
然后点击任意一页面后,将数据包发送到站点地图中(sitemap)
然后在sitmap中,我们有件点击相关工具,点击搜索注释
点击后可以查看到如下页面:
这时一个链接,我们可以拼接访问一下
可以看到成功的访问到了phpinfo页面,然后我们可以搜索一下要求的SECRET_KEY:
提交:
第三关:通过备份文件披露源代码
来到了第三关,介绍如下:
这个实验室通过隐藏目录中的备份文件泄露其源代码。为了解决实验室的问题,识别并提交数据库密码,该密码是在泄露的源代码中硬编码的。
源码泄露:获得源代码访问权限使攻击者更容易理解应用程序的行为并构造高严重性攻击。敏感数据有时甚至被硬编码在源代码中。这方面的典型示例包括用于访问后端组件的API密钥和凭据。
进入到靶场中可以看到如下页面:
根据提示,实验通过隐藏目录中的备份文件中代码中使用硬编码对数据密码进行了存储,那么我们就是要找到隐藏备份文件:
我们尝试使用robots.txt来查看网站的目录结构:
这里就有一个backup目录,一看就是备份文件的目录,访问:
访问备份文件:
可以看到成功的访问到了数据库的密码,提交:
第四关:通过信息披露绕过身份验证
来到第四关后,还是先来看看靶场的介绍:
该实验室的管理接口存在身份验证绕过漏洞,但在不知道前端使用的自定义HTTP标头的情况下进行攻击是不切实际的。
要解决实验室问题,请获取标头名称,然后使用它绕过实验室的身份验证。
访问管理员界面并删除用户carlos。
您可以使用以下凭据登录到自己的帐户:wiener:peter
访问靶场后,可以看到如下页面:
通过介绍,我们可以知道,主要的目的是要想办法通过伪造/修改HTTP头部来登录管理员admin的账号中,然后删除用户carlos
那我先试用提供的普通用户的账号登录一下:
wiener:peter
登录成功后,尝试访问一下admin页面:
可以看到如下报错
管理员界面仅对本地用户可用
这里并不是告诉我们我们的权限不够,而是说仅本地用户可用,这里细细思考一下,那是不是我伪装一下,变成本地用户就可以了呢?
我们在访问的同时抓取数据包,并且将方法修改为TRACE:
TRACE请求是一种用于回显服务器收到的请求的HTTP方法。
当客户端发送TRACE请求时,服务器将原始请求报文作为响应返回给客户端,用于检查或调试请求的传输过程。
可以看到这里有一个字段是X-Custom-IP-Authorization: 113.201.75.6,这可能就是我们不是本地用户的原因了,下面进行伪造:
X-Custom-IP-Authorization: 127.0.0.1
可以看到,来到了删除用户的页面,将carlos用户删除即可
在代理这里也可以设置:
然后访问admin页面,删除用户
第五关:版本控制历史中的信息披露
来到了第五关,介绍如下:
该实验室通过其版本控制历史记录披露敏感信息。要解决实验室问题,请获取管理员用户的密码,然后登录并删除用户carlos。
访问靶场可以看到如下页面:
分析提示,通过版本控制历史泄露敏感信息,我一下就想到了.git、.svn...之类的,这里尝试访问一下:
果然,存在.git文件泄露,那么下面就可以利用了
下载整个目录的副本
进入到下载的目录中,然后使用下列命令查看一下当前工作目录和暂存区的状态
git status
仔细查看更改后的admin.conf文件的差异(提交用环境变量ADMIN_PASSWORD替换了硬编码的管理员密码。但硬编码密码在diff中仍然清晰可见)
消息提示:“从配置中删除管理员密码”(删除了2个admin文件)
使用git log命令显示提交日志信息
git log
使用 git diff命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别
git diff + 上面 git log显示的的文件名
git diff f1c286a58446ccffd5b42bce3db384024d9deb67
可以看到成功的显示出了admin_password
下面我们登录到管理员账号中+访问admin目录删除用户
完美通关,还是所有都是√看着舒服哈
参考文章: