freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

服务器端漏洞篇之信息泄漏专题
2023-08-13 02:12:00

今天是梨子上课的第六天,学习真的会上瘾,上了Portswigger网络安全学院,梨子已经爱上学习了诶,这些漏洞原理都好有意思,而且老师讲的也好通俗易懂啊,还有配套仿真靶场,今天我们学习信息泄漏专题,看来也是一种很危险的漏洞呢。

声明

该系列共三篇,26个专题(截止2023.8.10),其中有21个专题的大部分内容已于2021年7-9月首发于安全客,由于某些原因,该系列后续更新部分梨子打算转投Freebuf社区(下称"社区")。因后续更新部分的部分内容为这21个专题中的,故在转投社区时会将更新部分一并加入对应的专题中,所以会与发布于安全客的版本略有出入,会更完整,望周知。

本系列介绍

PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配套了相关的在线靶场供初学者练习,本系列旨在以梨子这个初学者视角出发对学习该学院内容及靶场练习进行全程记录并为其他初学者提供学习参考,希望能对初学者们有所帮助。

梨子有话说

梨子也算是Web安全初学者,所以本系列文章中难免出现各种各样的低级错误,还请各位见谅,梨子创作本系列文章的初衷是觉得现在大部分的材料对漏洞原理的讲解都是模棱两可的,很多初学者看了很久依然是一知半解的,故希望本系列能够帮助初学者快速地掌握漏洞原理。

服务器端漏洞篇介绍

burp官方说他们建议初学者先看服务器漏洞篇,因为初学者只需要了解服务器端发生了什么就可以了

服务器端漏洞篇 - 信息泄漏专题

什么是信息泄漏?

burp好严谨啊,什么是信息泄漏,如果没有阅读障碍的话,信息泄漏应该就是信息泄漏了吧,好,废话不多说,那么信息泄漏一般会泄漏哪些信息呢?

  • 用户相关信息

  • 敏感的商业数据

  • 有关网站及其基础架构的技术细节

这里说的技术细节就类似一些配置文件的泄漏啊,组件信息之类的这种的,信息泄漏不会直接对应用程序造成伤害,但是可以为攻击者进行下一步攻击提供很大帮助

有哪些信息泄漏的例子呢?

  • 通过robots.txt文件或目录列表显示隐藏目录的名称,结构及其内容

  • 通过临时备份提供对源代码文件的访问

  • 在错误消息中明确提及数据库表或列名

  • 不必要地暴露高度敏感的信息,例如信用卡详细信息

  • 在源代码中对API密钥,IP地址,数据库凭据等进行硬编码

  • 通过应用程序行为的细微差别来提示是否存在资源,用户名等

上面是burp列举出来的信息泄漏的例子,我们简单讲一下
第一个很好理解,robots.txt本来是一个相当于给搜索引擎爬虫的指引文件,但是里面会标明一些不让搜索引擎爬虫爬取的目录,那这不明摆着暗示这些目录是敏感目录嘛,这就属于泄漏了敏感的网站目录了
第二个呢就是有一些组件可以生成一些备份文件,备份文件就拥有和源文件相同的内容,如果这类文件泄漏的话,攻击者就可以从中还原出源文件,比如.svn,.git,.bak之类的,还是比较危险的
第三个其实在我们看来并不算是信息泄漏的范畴,但是burp将其归纳到了信息泄漏里面,我们一般称之为报错注入
第四个就属于个人敏感信息泄漏了,比如信用卡安全码啊,身份证号啊,手机号服务密码之类的,信用卡安全和手机号服务密码是最后一道防线,如果泄漏了,就会被信用卡中心或者手机号中心认定为本人所有,非常危险,所以大家一定要保管好哦
第五个也很危险,与上一条类似,如果泄漏了API密钥,数据库凭据这一类信息的话,API和数据库就会因为通过验证而被攻击者滥用,说不定还会做一些不好的事情,因为图方便嘛,开发者一般会将这一类信息硬编码在相关配置文件中,所以要么采取严格的访问控制手段不让其他人访问到配置文件,要么采用每次使用都需要手动输入的方式来缓解这种风险
第六个可以用来搭配目录遍历或者用户名枚举之类的,这些信息对于攻击者来说也是非常有用的

信息泄露漏洞是如何产生的?

信息泄漏大致分为以下类型:

  • 未能从公共内容中删除内部内容。比如开发人员忘了删除注释,有可能会泄漏隐藏的接口等。

  • 网站及相关技术的不安全配置。比如开发人员忘了关debug模式,导致能获取到更多的本来是为了方便调试而产生的敏感数据,也可能存在默认配置的网站,这就很可怕,这往往也是某些Nday的产生原理。

  • 应用程序的设计和行为存在缺陷。有的时候,应用程序会根据用户的输入返回不同的信息,我们可以根据这些信息侧面获取某些信息,比如我们可以通过用户名不存在枚举有效的用户名。

信息泄漏漏洞有什么危害?

信息泄漏漏洞的危害其实和业务逻辑漏洞类似,它主要取决于你泄漏的信息是什么,比如只是泄漏了打码的姓名啊,手机号啊,或者一些无关紧要的配置信息,这些一般没什么危害,但是如果泄漏的是完整的姓名、关键功能的配置信息,这就危害很大啊。

如何评估信息泄露漏洞的严重性?

有时候我们知道了应用程序使用了什么版本的组件,这也不能说它的危害就严重,因为可能该版本的组件是安全的,也可能该版本存在一些高危的Nday可以利用,这就危害很大,所以评估信息泄漏漏洞的严重性还是要看最终是否可以加以利用。

如何测试信息泄漏漏洞?

burp建议测试这类漏洞的时候不要局限在漏洞上,因为信息泄漏可能发生在任何地方,下面介绍几种测试信息泄漏漏洞的方法

fuzz(模糊测试)

模糊测试就是你发现了一个可能会有异常的参数点,但是又不确定,所以可以通过对参数点所有或者大部分可能的情况进行一个遍历,然后观察是否有预期的异常,burp给出了一下几点指导

  • 在Intruder中将可疑参数点设置为payload位,并填充由可能的情况组成的列表(字典)

  • 通过观察状态码,响应时间,长度等判断异常情况

  • 使用Option中的Grep功能可以对响应进行特征提取方便筛选出预期结果

burp推荐有兴趣的可以试试logger++,拥有更多提取特征值的技术,梨子简单地看了一下,太强大了,还是有时间再研究吧

使用Burp扫描器

这个就不用讲了吧,就是扫,burp会在你正常访问的是否对你的流量进行动态审计,从而发现可能为敏感信息的字段,这个功能是默认开的,大家可以偶尔看一眼面板,可能会有意外之喜哦。

使用Burp辅助工具(engagement tools)

为什么还要打个括号,因为直接说辅助工具大家可能不太知道是哪个东西,而且如果直译的话大家可能更难理解了,所以我们结合这个模块的作用,以及engagement的单独翻译,梨子打算翻译成辅助工具,非常的贴切,下面我们来看看它都有哪些功能吧

Search

为了避免大家找不到相应的工具,梨子这里采用原文,这款工具拥有多种搜索方式,包括正则,反选等,它可以列出所有符合条件的请求包,但是梨子发现现在这个模块已经不在engagement tools里面了, 现在换到了左上角的burp功能栏里

Find comments

好家伙,这个工具就厉害了,可以快速地在所选请求包中提取所有开发者注释,这绝对是检测信息泄漏的利器呀,有的开发者比较粗心的没有完全清除注释就上线了,这些注释中有时也会给攻击者一些提示

Discover content

这个功能简单讲就是一个爬虫,会递归地把目录爬出来,有的时候我们肉眼看到的页面并不是全部,有的页面入口是我们很难发现的,这时候用这个模块就可以发现这些入口,经常会有惊喜的,嘻嘻嘻

常见的信息泄漏来源

网络爬虫指引文件

很多网站为了提高网站的搜索指数,会在/robots.txt和/sitemap.xml中进行一些指示,当然了,他们也可以在其中指定一些不允许爬虫爬取的目录,那么这些目录就可以认为是比较敏感的目录,这些目录可以给攻击者提供很多有利的信息

目录遍历

有的应用程序采用了默认配置,会自动显示出整个应用系统的文件结构,虽然这本身不算漏洞,但是攻击者能够看到完整的目录结构,这就为他们攻击提供了非常好的帮助,如果还有任意文件下载漏洞的话,攻击者甚至可以将整个应用程序下载下来,这就更危险了

开发者注释

我们在讲Find comments就讲过,开发者在将应用程序上线时会忘记删除某些注释,这就导致可能会会泄露一些敏感信息,万一有开发者图省事将密码,内网地址之类的写在注释里,这就为攻击者后续攻击提供了极大的便利

报错信息

报错信息也可能给攻击者提示,比如输入非常规值会报错提示常规值的范围,发出非常规请求会报错提示使用的组件种类及版本,这时候就可以到网络上寻找相关版本攻击的复现文章或视频了,而且,一些组件的官方文档中还会着重标注可能会引发错误的点,这就相当于暗示了,如果通过报错信息得知应用程序采用了某种开源框架,还可以通过审计其源码寻找漏洞,代码审计就像开了上帝视角一样,还有类似报错注入,用户名枚举之类利用报错信息攻击的手段

配套靶场:报错信息中的信息泄漏

我们发现应用程序是通过纯数字来定位商品,那么我们要是换成字符串呢
image
哦?我们看到不仅报错了,还告诉我们使用的中间件类型还有版本,有了这个版本号我们就可以对症下药去找相关的复现文章或利用工具了
image

调试数据

与开发者注释类似,开发者为了方便调试会生成一些自定义的调试信息,用来为进一步调试做指导,但是如果这些调试数据展示给攻击者,那就不是为进一步调试做指导了,而是为后续攻击做指导了,调试数据可能包含以下有效攻击提示

  • 可以通过用户输入操作的关键会话变量的值

  • 后端组件的主机名和凭据

  • 服务器上的文件和目录名称

  • 用于加密通过客户端传输的数据的密钥

有的时候还会生成存储调试数据的文件,如果攻击者能够访问到这个文件就也可以获取某些有效信息

配套靶场:调试页面上的信息泄漏

页面没有什么异常,我们f12看一下,发现了一条线索
image
这提示的也太明显了吧,反正理解这个原理就好,然后我们尝试访问这个文件
image
好的!我们看到了phpinfo中泄漏了一个很重要的SECRET_KEY,这个key据说有很大用处,大家感兴趣的可以自行百度一下
image

用户账户页面

用户账户页面也会暴露用户的很多信息,但是一般来讲,只有自己能看到自己的页面,那么如果我通过某种漏洞让我可以看到其他人的,这就导致他人的敏感信息也被我看到了,这就可能会导致各种功能的冒用,但是这里要结合其他漏洞来讲,所以等到我们后面讲访问控制和IDOR漏洞的时候再深入讲解

利用备份文件泄漏源代码

前面有简单讲过,备份文件可以还原出完整或者部分的应用程序源代码,这些源代码中包含着很多对攻击者有利的信息,通过审计源码甚至可以很容易地制定攻击方案,或者从源代码也可以泄漏API密钥,从而冒用其API去做一些不好的事情,有一些文本编辑器也是,意外退出时备份文件也不会被删除,里面保存着与文本文件相同的内容,很容易就恢复出来了

配套靶场:利用备份文件泄漏源代码

页面和f12都没什么东西,那我们看看robots.txt里面有没有什么有趣的东西
image
好的,有好东西,这里提示我们这个目录是不允许爬取的,那我们直接访问可以吧,嘻嘻嘻
image
我们发现了一个备份文件,我们访问一下这个文件
image
我们在文件中发现了硬编码的数据库密码诶
image

由不安全配置导致的信息泄漏

有的应用程序会采用很多第三方的组件,但是如果对这些组件没有那么熟悉就导致采用了不安全的配置,从而给攻击者可乘之机,比如安全人员忘记关掉只有调试的时候才会开启的TRACE请求方法,导致攻击者也可以通过发出TRACE请求获取详细的请求包信息,这里面可能包括内网地址之类的

配套靶场:利用信息泄漏绕过身份验证

这道题目目的是想让我们删除用户,于是我们访问一下/admin
image
页面提示我们只有本地用户才允许访问,于是我们利用刚学的新知识TRACE请求一下
image
发现响应会显示我们完整的请求信息,还会显示服务端接收到的源IP是多少,那既然本地才能访问,我们请求的时候直接把该字段修改成本地地址试试
image
我们发现服务端接收到的也是我们修改以后的源IP地址,那我们就可以顺利访问/admin了
image
好的,我们成功访问到了/admin页面,然后我们就可以删除指定用户了
image
现在我们看到已经成功删除指定用户了
image

版本控制历史

一般搞开发的都会弄版本控制,比如git啊,svn啊之类的,拿git来讲,它会将版本控制信息放在.git文件夹中,用户访问它就可以下载下来,然后就可以通过各种办法恢复里面的信息,里面可能会有一些硬编码的敏感信息之类的

配套靶场:版本控制历史中的信息泄漏

首先我们先把/.git文件夹下载下来
wget -r https://[靶场ID].web-security-academy.net/.git
image
然后查看里面的HEAD文件
cat HEAD
image
然后再利用git cat-file -p [refs/heads/master中的hash值]还原文件
image
我们看到里面有一条消息"Remove admin password from config",然后我们再利用里面的hash值继续恢复文件
image
胜利就在眼前了,结果我们一路恢复
image
好家伙,我们恢复了这么多文件才恢复出来,可能梨子还是不太了解git的结构吧,当然了,现在已经有很多可以快速从.git文件夹恢复的工具了,大家感兴趣的可以搜索一下,拿到管理员密码以后就能像之前一样登录administrator然后删除指定用户了
image

如何防止信息泄漏漏洞?

burp对于非常棘手的信息泄漏提供了以下防护建议

  • 确保参与开发应用程序的所有人员知道哪些是敏感信息,往往看似无害的信息也会成为攻击者利用的点

  • 完整审计代码以发现隐藏的信息泄漏风险

  • 尽量提供一般性的错误信息,即不要给出详细的报错信息,比如仅提示某些必须提供的信息有误之类的

  • 再三检查应用程序上线前已关闭所有调试模式及选项

  • 对第三方组件完全了解并禁用所有不相关的功能

总结

以上就是梨子去上PortSwigger网络安全学院系列之服务器端漏洞篇 - 信息泄漏专题的全部内容啦,总体看来信息泄漏的危害可大可小,但是都是不容忽视的风险,尤其是要谨防源代码泄漏,一旦攻击者拿到源代码则会因为全面进行代码审计而暴露出大量的漏洞,还有就是各种凭证的泄漏,也是很危险的,当然了,还要保护用户的个人隐私不被泄露,这对一个企业信誉往往有着很大的影响,好的,大家有任何问题可以在评论区讨论哦!

# burpsuite # web安全 # 信息泄漏
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录