「Burpsuite练兵场」Portswigger Web Security Academy介绍

Portswigger是著名神器Burpsuite的官方网站,实际上也是一个非常好的漏洞训练平台,但在国内信安圈却鲜有提及,因此从今天开始i春秋论坛作家「dll_s」表哥将对其进行全面系统的介绍。

官网链接:https://portswigger.net/web-security

以下简称该平台为Burpsuite学院。

为什么称它为Burpsuite学院呢?因为其训练内容非常侧重于对Burpsuite各项功能的深入挖掘,这本身和创建该平台的初衷也是分不开的。另外,其实这也是《黑客攻防技术宝典Web实战篇》的实战训练平台,配合使用学习效果更佳。

Burpsuite学院优点:

1、实验环境多样化,覆盖广内容多,同时使用真实网络环境,具有很强的实操性;

2、针对每个实验漏动原理有相关介绍,且针对具体操作细节也有详细说明;

3、包含许多其他漏洞靶场所没有的漏洞思路,总之就是内容非常的全面。

Burpsuite学院缺点:

1、访问可能比较缓慢,需要自行解决;

2、官网页面均为英文,对于国内的小伙伴可能不是很友好,不过对于学习信安接触英文也是在所难免的,长期的接触下就会自然而然的发现专业英语越来越流利;

3、需要一定的基础,比如对于Burpsuite工具的基本操作。同时由于其每个环节下有多个实验环境,练习进度往往会比较缓慢,还是建议新手可以先使用dvwa,pikachu等开源靶场对常见漏洞有一个大体了解再来进行进阶学习。

 

平台概况

Burpsuite学院目前含有漏洞实验内容160多个,基本涵盖了各个方面的Web漏洞,并且会不断更新。

 

同时还有个人专属的学习情况跟踪面板。

 

使用方式也非常简单,使用邮箱注册账号登录之后即可开始学习,下面就抛砖引玉地简单介绍下三个用户验证漏洞实验。

首先访问Burpsuite学院,点击进入Authentication模块,可以看到相关漏洞背景介绍信息,下拉可以看见包含了三个实验环节。

 

 

我们选择第一个:基于密码验证的登录漏洞,可以看到总共包含了三个实验内容。下面依次对这三个实验进行介绍。

 

实验一:通过responses内容不同枚举用户名

进入实验可以看到对该实验的简单介绍,该实验的内容是用户名枚举和密码爆破,同时提供了候选用户名和密码列表,还是比较简单和经典的。点击Access the lab即可进入实验,点击solution可以查看具体的实验操作指南,还是建议先自我尝试实验内容,遇到难以攻克的问题再来这里找思路。

 

进入实验后是一个简单的博客网站,点击右上角Account login进入登录界面。配置好Burpsuite监听代理,先使用弱口令进行尝试root:123456,可以发现错误信息提示用户名错误。

 

以此推测该验证登录会指明具体的错误原因,可被用来枚举用户名,使用Burpsuite拦截发送到Intruder模块,配置好payload位置。这里使用的是sniper攻击类型,固定密码,使用网站提供的用户名列表进行枚举。

Burpsuit Intruder不同攻击类型差别:

Sniper狙击手:使用一组payload集合,一次只将payload填入一个位置;

Battering ram:同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置;

Pitchfork:允许使用多组payload组合,在每个标记位置上顺序遍历其payload(payload数量对应);

Cluster bomb:允许使用多组payload组合,会循环遍历每个payload位置组合。

 

对枚举结果按responses length进行排序,即可发现可用的用户名。

 

固定用户名为枚举结果,使用相同方式对密码进行爆破,观察结果可以发现一个异常302状态,此即为正确的密码。

 

注意:在此请求之后发送的请求响应均为400状态码是由于服务器在一次正确登录后刷新了session cookie,因此导致了后续提交请求中csrf字段与session的验证错误。所以我们在使用正确账号登录时也要注意需要刷新页面csrf才可以成功登录,登录后点击访问My Account即可看到实验状态更新为solved也就是完成了。

实验二:基于responses内容的细微差别枚举用户名

这一实验与上一个相比,response响应内容长不断变化的,我本来以为是通过compare模块比较各响应差别寻找正确的用户名,也确实发现了一些报文内容相较于其他报文多了一段注释”<!-->“,但是存在这段注释的报文非常多,因此并不具备可行性,下面介绍正确解法。

跟之前一样尝试弱口令,发现错误提示变为了Invalid username or password.,无法简单枚举。

 

使用Burpsuite拦截,发送到Intruder模块,固定密码进行用户名枚举,发现长度一直在变化。

 

点击Option按钮,使用Grep-Extract功能,点击Add按钮,选择如图所示区域(此步骤其实就是本次实验的精髓,可以思考下为什么要选择这一区域,因为这是服务器验证用户名密码后的信息交互区,针对正确和错误可能后台程序员会编写两个界面,而这微小的差别就造成了信息泄露)。

 

设置好后返回Result界面,拖动即可发现其中一个返回语句中少了一个句号,这个角度实在是非常的***钻,直接观察确实是很难发现。这里其实也可以复制交互信息区域内容到下方查找栏中,然后通过上下键遍历结果,发现0 matches的即为异常请求。

 

后续操作就不再复述了,基本与上一实验类似,登录访问账号信息页面即可完成实验。

实验三:基于响应延时的用户名枚举

此实验等级为PRACTITIONER(从业者),使用了IP防爆破保护,可以使用伪造X-Forwarded-For字段绕过。对于用户名枚举,这里的实验原理为:程序后台进行验证登录时,会先验证用户名是否正确,错误则立即返回失败信息,正确则到数据库中比对密码,而通过使用超长密码增加这一查询时延即可对用户名进行爆破。

进入实验,使用弱密码尝试多次登录后会发现遭到锁定,请在30分钟后尝试。

 

发现可以通过伪造X-Forwarded-For字段绕过IP保护。

 

设置payload,使用Pitchfork模式,payload set1设置为1-100的数字枚举,用于生成动态IP,paylaod set2为用户名列表。

 

 

对于Intruder运行结果,点击Columns新增Response received一栏,排序后时延最大的即为正确的用户名。

 

使用爆破出的用户名,同样使用Pitchfork模式爆破密码,成功后登录以完成实验。可能由于之前的多次尝试仍处于锁定状态,可以抓包修改X-Forwarded-For字段或者直接替换cookie访问账号信息即可。

总结

平台的基本情况就介绍到这里了,这几个实验难度并不是很高,也会有一种刷CTF的感觉,但如何通过这些实验,系统性地对Web安全进行深入评估是我们所应该在实验过程中不断思考的。

以上是今天要分享的内容,大家看懂了吗?

posted @ 2020-07-29 10:41  i春秋  阅读(5855)  评论(0编辑  收藏  举报