用户
搜索
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 18 天

    连续签到: 5 天

    [LV.4]经常看看II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    0

    主题

    7

    帖子

    244

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2018-6-2

    i春秋签约作者

    发表于 2020-7-15 18:41:01 24100
    0x00 背景介绍

          Portswigger是著名神器Burpsuite的官方网站,但其实际上也是一个非常好的漏洞训练平台,但在国内信安圈却鲜有提及,因此今天对其进行一个简单的介绍。官网链接:
    https://portswigger.net/web-securit 以下简称该平台为BP学院。
          为什么称它为BP学院呢,因为其训练内容非常侧重于对bp各项功能的深入挖掘,这本身和创建该平台的初衷也是分不开的。另外,其实这也是《黑客攻防技术宝典Web实战篇》的实战训练平台,配合食用更佳哦。关于这本书在国内的推荐也并不多,但在许多国外网站上却常常能看到它的身影,比如如何学习成为web漏洞赏金猎人:https://www.quora.com/Where-do-I-learn-bug-bounty-hunting-in-websites?share=1,其内容相较于其他web安全类书籍更为详实和系统化,也是一本非常好的进阶书籍。
    BP学院优点:
    • 实验环境多样化,覆盖广内容多,同时使用真实网络环境,具有很强的实操性
    • 针对每个实验漏动原理有相关介绍,且针对具体操作细节也有详细说明
    • 包含许多其他漏洞靶场所没有的漏洞思路,总之就是内容非常的全面

    BP学院缺点:
    • 访问可能比较缓慢,需要自行解决
    • 官网页面均为英文,对于国内的小伙伴可能不是很友好(在此亲情推荐“网易有道词典“,下载桌面版后,使用ctrl+alt+d截屏翻译实在不要太好用),不过对于学习信安来说,接触英文往往也是在所难免的,对于东西也不能特别抗拒,在长期的接触下你会自然而然的发现看专业英语越来越流利了
    • 需要一定的基础,比如对于Burpsuite工具的基本操作。同时由于其每个环节下有多个实验环境,练习进度往往会比较缓慢,还是建议新手可以先使用dvwa,pikachu等开源靶场对常见漏洞有一个大体了解再来进行进阶学习

    0x01 平台概况

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


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

    使用方式也非常简单,使用邮箱注册账号登录之后即可开始学习,下面就抛砖引玉地简单介绍下三个用户验证漏洞实验。首先访问BP学院,点击进入Authentication模块,可以看到相关漏洞背景介绍信息,下拉可以看见包含了三个实验环节(图2为有道词典截屏翻译结果)。

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

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

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

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

    以此推测该验证登录会指明具体的错误原因,可被用来枚举用户名,使用bp拦截发送到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.,无法简单枚举

    使用bp拦截,发送到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访问账号信息即可。


    0x03 总结

    平台的基本情况就介绍到这里了,这几个实验难度并不是很高,也会有一种刷ctf的感觉,但如何通过这些实验,系统性地对web安全进行深入评估是我们所应该在实验过程中不断思考的。作为一个web漏洞练兵场,还是希望大家玩的开心。
    发表于 2020-7-25 13:49:03
    占个前面看大佬姿势
    使用道具 举报 回复
    发表于 2020-7-27 10:49:36
    干货,期待老哥的后续文章
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册