本系列介绍
PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配套了相关的在线靶场供初学者练习,本系列旨在以梨子这个初学者视角出发对学习该学院内容及靶场练习进行全程记录并为其他初学者提供学习参考,希望能对初学者们有所帮助。
梨子有话说
梨子也算是Web安全初学者,所以本系列文章中难免出现各种各样的低级错误,还请各位见谅,梨子创作本系列文章的初衷是觉得现在大部分的材料对漏洞原理的讲解都是模棱两可的,很多初学者看了很久依然是一知半解的,故希望本系列能够帮助初学者快速地掌握漏洞原理。
服务器端漏洞篇介绍
burp官方说他们建议初学者先看服务器漏洞篇,因为初学者只需要了解服务器端发生了什么就可以了
服务器端漏洞篇 – 信息泄漏专题
什么是信息泄漏?
burp好严谨啊,什么是信息泄漏,如果没有阅读障碍的话,信息泄漏应该就是信息泄漏了吧,好,废话不多说,那么信息泄漏一般会泄漏哪些信息呢?
- 用户相关信息
- 敏感的商业数据
- 有关网站及其基础架构的技术细节
这里说的技术细节就类似一些配置文件的泄漏啊,组件信息之类的这种的,信息泄漏不会直接对应用程序造成伤害,但是可以为攻击者进行下一步攻击提供很大帮助
有哪些信息泄漏的例子呢?
- 通过robots.txt文件或目录列表显示隐藏目录的名称,结构及其内容
- 通过临时备份提供对源代码文件的访问
- 在错误消息中明确提及数据库表或列名
- 不必要地暴露高度敏感的信息,例如信用卡详细信息
- 在源代码中对API密钥,IP地址,数据库凭据等进行硬编码
- 通过应用程序行为的细微差别来提示是否存在资源,用户名等
上面是burp列举出来的信息泄漏的例子,我们简单讲一下
第一个很好理解,robots.txt本来是一个相当于给搜索引擎爬虫的指引文件,但是里面会标明一些不让搜索引擎爬虫爬取的目录,那这不明摆着暗示这些目录是敏感目录嘛,这就属于泄漏了敏感的网站目录了
第二个呢就是有一些组件可以生成一些备份文件,备份文件就拥有和源文件相同的内容,如果这类文件泄漏的话,攻击者就可以从中还原出源文件,比如.svn,.git,.bak之类的,还是比较危险的
第三个其实在我们看来并不算是信息泄漏的范畴,但是burp将其归纳到了信息泄漏里面,我们一般称之为报错注入
第四个就属于个人敏感信息泄漏了,比如信用卡安全码啊,身份证号啊,手机号服务密码之类的,信用卡安全和手机号服务密码是最后一道防线,如果泄漏了,就会被信用卡中心或者手机号中心认定为本人所有,非常危险,所以大家一定要保管好哦
第五个也很危险,与上一条类似,如果泄漏了API密钥,数据库凭据这一类信息的话,API和数据库就会因为通过验证而被攻击者滥用,说不定还会做一些不好的事情,因为图方便嘛,开发者一般会将这一类信息硬编码在相关配置文件中,所以要么采取严格的访问控制手段不让其他人访问到配置文件,要么采用每次使用都需要手动输入的方式来缓解这种风险
第六个可以用来搭配目录遍历或者用户名枚举之类的,这些信息对于攻击者来说也是非常有用的
如何测试信息泄漏漏洞?
burp建议测试这类漏洞的时候不要局限在漏洞上,因为信息泄漏可能发生在任何地方,下面介绍几种测试信息泄漏漏洞的方法
fuzz(模糊测试)
模糊测试就是你发现了一个可能会有异常的参数点,但是又不确定,所以可以通过对参数点所有或者大部分可能的情况进行一个遍历,然后观察是否有预期的异常,burp给出了一下几点指导
- 在Intruder中将可疑参数点设置为payload位,并填充由可能的情况组成的列表(字典)
- 通过观察状态码,响应时间,长度等判断异常情况
- 使用Option中的Grep功能可以对响应进行特征提取方便筛选出预期结果
burp推荐有兴趣的可以试试logger++,拥有更多提取特征值的技术,梨子简单地看了一下,太强大了,还是有时间再研究吧
使用Burp辅助工具(engagement tools)
为什么还要打个括号,因为直接说辅助工具大家可能不太知道是哪个东西,而且如果直译的话大家可能更难理解了,所以我们结合这个模块的作用,以及engagement的单独翻译,梨子打算翻译成辅助工具,非常的贴切,下面我们来看看它都有哪些功能吧
Search
为了避免大家找不到相应的工具,我们这里采用原文,这款工具拥有多种搜索方式,包括正则,反选等,它可以列出所有符合条件的请求包,但是梨子发现现在这个模块已经不在engagement tools里面了, 现在换到了左上角的burp功能栏里
Find comments
好家伙,这个工具就厉害了,可以快速地在所选请求包中提取所有开发者注释,这绝对是检测信息泄漏的利器呀,有的开发者比较粗心的没有完全清除注释就上线了,这些注释中有时也会给攻击者一些提示
Discover content
这个功能简单讲就是一个爬虫,会递归地把目录爬出来,有的时候我们肉眼看到的页面并不是全部,有的页面入口是我们很难发现的,这时候用这个模块就可以发现这些入口,经常会有惊喜的,嘻嘻嘻
常见的信息泄漏来源
网络爬虫指引文件
很多网站为了提高网站的搜索指数,会在/robots.txt和/sitemap.xml中进行一些指示,当然了,他们也可以在其中指定一些不允许爬虫爬取的目录,那么这些目录就可以认为是比较敏感的目录,这些目录可以给攻击者提供很多有利的信息
目录遍历
有的应用程序采用了默认配置,会自动显示出整个应用系统的文件结构,虽然这本身不算漏洞,但是攻击者能够看到完整的目录结构,这就为他们攻击提供了非常好的帮助,如果还有任意文件下载漏洞的话,攻击者甚至可以将整个应用程序下载下来,这就更危险了
开发者注释
我们在讲Find comments就讲过,开发者在将应用程序上线时会忘记删除某些注释,这就导致可能会会泄露一些敏感信息,万一有开发者图省事将密码,内网地址之类的写在注释里,这就为攻击者后续攻击提供了极大的便利
报错信息
报错信息也可能给攻击者提示,比如输入非常规值会报错提示常规值的范围,发出非常规请求会报错提示使用的组件种类及版本,这时候就可以到网络上寻找相关版本攻击的复现文章或视频了,而且,一些组件的官方文档中还会着重标注可能会引发错误的点,这就相当于暗示了,如果通过报错信息得知应用程序采用了某种开源框架,还可以通过审计其源码寻找漏洞,代码审计就像开了上帝视角一样,还有类似报错注入,用户名枚举之类利用报错信息攻击的手段
配套靶场:报错信息中的信息泄漏
我们发现应用程序是通过纯数字来定位商品,那么我们要是换成字符串呢
哦?我们看到不仅报错了,还告诉我们使用的中间件类型还有版本,有了这个版本号我们就可以对症下药去找相关的复现文章或利用工具了
调试数据
与开发者注释类似,开发者为了方便调试会生成一些自定义的调试信息,用来为进一步调试做指导,但是如果这些调试数据展示给攻击者,那就不是为进一步调试做指导了,而是为后续攻击做指导了,调试数据可能包含以下有效攻击提示
- 可以通过用户输入操作的关键会话变量的值
- 后端组件的主机名和凭据
- 服务器上的文件和目录名称
- 用于加密通过客户端传输的数据的密钥
有的时候还会生成存储调试数据的文件,如果攻击者能够访问到这个文件就也可以获取某些有效信息
配套靶场:调试页面上的信息泄漏
页面没有什么异常,我们f12看一下,发现了一条线索
这提示的也太明显了吧,反正理解这个原理就好,然后我们尝试访问这个文件
=
好的!我们看到了phpinfo中泄漏了一个很重要的SECRET_KEY,这个key据说有很大用处,大家感兴趣的可以自行百度一下
用户账户页面
用户账户页面也会暴露用户的很多信息,但是一般来讲,只有自己能看到自己的页面,那么如果我通过某种漏洞让我可以看到其他人的,这就导致他人的敏感信息也被我看到了,这就可能会导致各种功能的冒用,但是这里要结合其他漏洞来讲,所以等到我们后面讲访问控制和IDOR漏洞的时候再深入讲解
利用备份文件泄漏源代码
前面有简单讲过,备份文件可以还原出完整或者部分的应用程序源代码,这些源代码中包含着很多对攻击者有利的信息,通过审计源码甚至可以很容易地制定攻击方案,或者从源代码也可以泄漏API密钥,从而冒用其API去做一些不好的事情,有一些文本编辑器也是,意外退出时备份文件也不会被删除,里面保存着与文本文件相同的内容,很容易就恢复出来了
配套靶场:利用备份文件泄漏源代码
页面和f12都没什么东西,那我们看看robots.txt里面有没有什么有趣的东西
好的,有好东西,这里提示我们这个目录是不允许爬取的,那我们直接访问可以吧,嘻嘻嘻
我们发现了一个备份文件,我们访问一下这个文件
我们在文件中发现了硬编码的数据库密码诶
由不安全配置导致的信息泄漏
有的应用程序会采用很多第三方的组件,但是如果对这些组件没有那么熟悉就导致采用了不安全的配置,从而给攻击者可乘之机,比如安全人员忘记关掉只有调试的时候才会开启的TRACE请求方法,导致攻击者也可以通过发出TRACE请求获取详细的请求包信息,这里面可能包括内网地址之类的
配套靶场:利用信息泄漏绕过身份验证
这道题目目的是想让我们删除用户,于是我们访问一下/admin
页面提示我们只有本地用户才允许访问,于是我们利用刚学的新知识TRACE请求一下
发现响应会显示我们完整的请求信息,还会显示服务端接收到的源IP是多少,那既然本地才能访问,我们请求的时候直接把该字段修改成本地地址试试
我们发现服务端接收到的也是我们修改以后的源IP地址,那我们就可以顺利访问/admin了
好的,我们成功访问到了/admin页面,然后我们就可以删除指定用户了
现在我们看到已经成功删除指定用户了
版本控制历史
一般搞开发的都会弄版本控制,比如git啊,svn啊之类的,拿git来讲,它会将版本控制信息放在.git文件夹中,用户访问它就可以下载下来,然后就可以通过各种办法恢复里面的信息,里面可能会有一些硬编码的敏感信息之类的
配套靶场:版本控制历史中的信息泄漏
首先我们先把/.git文件夹下载下来wget -r https://[靶场ID].web-security-academy.net/.git
然后查看里面的HEAD文件cat HEAD
然后再利用git cat-file -p [refs/heads/master中的hash值]还原文件
我们看到里面有一条消息”Remove admin password from config”,然后我们再利用里面的hash值继续恢复文件
胜利就在眼前了,结果我们一路恢复
好家伙,我们恢复了这么多文件才恢复出来,可能梨子还是不太了解git的结构吧,当然了,现在已经有很多可以快速从.git文件夹恢复的工具了,大家感兴趣的可以搜索一下,拿到管理员密码以后就能像之前一样登录administrator然后删除指定用户了
如何防止信息泄漏漏洞?
burp对于非常棘手的信息泄漏提供了以下防护建议
- 确保参与开发应用程序的所有人员知道哪些是敏感信息,往往看似无害的信息也会成为攻击者利用的点
- 完整审计代码以发现隐藏的信息泄漏风险
- 尽量提供一般性的错误信息,即不要给出详细的报错信息,比如仅提示某些必须提供的信息有误之类的
- 再三检查应用程序上线前已关闭所有调试模式及选项
- 对第三方组件完全了解并禁用所有不相关的功能
总结
以上就是梨子带你刷burpsuite官方网络安全学院靶场(练兵场)系列之服务器端漏洞篇 – 信息泄漏专题的全部内容啦,总体看来信息泄漏的危害可大可小,但是都是不容忽视的风险,尤其是要谨防源代码泄漏,一旦攻击者拿到源代码则会因为全面进行代码审计而暴露出大量的漏洞,还有就是各种凭证的泄漏,也是很危险的,当然了,还要保护用户的个人隐私不被泄露,这对一个企业信誉往往有着很大的影响,好的,大家有任何问题可以在评论区讨论哦!
发表评论
您还未登录,请先登录。
登录