热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

梨子带你刷burpsuite靶场系列之服务器端漏洞篇信息泄漏专题

 本系列介绍PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配

 

本系列介绍


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


推荐阅读
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
author-avatar
李磊g114826
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有