文章目录

  • 前言
  • 一、token参数分析
  • 二、burp设置宏操作
  • 三、爬虫脚本
  • 四、小结

前言

在工作中,会遇到很多登陆页面有token保护,如果用Burpsuite直接抓取数据包并使用爆破模块,则会因token过期导致无法爆破。此时至少可以采用三种办法:
第一种是设置burp宏,从服务器返回包中提取token值,并更新当前数据包再爆破;
第二种是使用爬虫脚本,动态更新token值,并构造新数据后进行爆破;
第三种是使用python运行selenium库进行爆破,好处是无需管什么token,坏处是效率很低,不推荐这种方法。
下面使用DVWA在线靶场分别演示前两种方法(建议读者自行下载DVWA本地搭建环境即可)。


一、token参数分析

首先访问DVWA登陆页面:

账号密码随便输入,然后点击登陆按钮并抓取数据包:

发现页面中存在token。那么此时使用重放模块测试一下token是否只能用一次,。第一次发送(注意需要跟随重定向):

发现提示的是Login Failed。
第二次发送:

发现提示token不正确。这就意味着,token必须每次更新,通过后端校验后,才会检验正好密码。
接下来查看返回包内容,可以找到token的藏身之处:

现在我们知道,该页面需要保证token正确。那么token又是如何更新的呢,我们在repeater模块是跟随了重定向后出现了token,那么在proxy模块正常传递数据包时,服务端又是如何返回token的呢?查看proxy模块的http history:

可以看到,登陆请求包发送之后,会发送一次GET请求,同时服务器会返回新的token值,下次登陆就需要用这个新的token了。
现在可以判断出,DVWA登陆页面的防爆破功能的逻辑,就是先提交账号密码,当登陆失败时,返回一个新的token,下次提交登陆数据时,需要带着这个token,当token验证通过后,才会验证账号密码。

因此,要想对此页面进行爆破,只要在常规操作的基础上增加一个读取响应包中的token并替换掉数据包中的旧token这样的操作即可实现爆破操作。


二、burp设置宏操作

从上述分析中可以看出,这样的操作流程是固定的,而且需要大量重复操作,那么此时burp的宏就有用武之地了。
现在为了方便你们操作,我用Burp英文版演示一下。
为了节约时间,我就当开了天眼了,知道了账号是admin,但密码不知道,需要爆破。
首先登陆页面输入账号admin,密码随便输入,然后使用burp拦截并放包一次。这样做是为了在burp的历史记录中留下一条记录,如图所示:

接下来在burp的设置中找到以下内容:

不同版本的burp不尽相同,但通常都在sessions里面,有Macrors,这个就是burp的宏。找到以后,需要新增一条宏规则,点击add,然后选择刚才生成token的那条历史记录,接着点击OK:

在出来的界面中,Macro description表示宏的描述,可以随便写。然后点击下方的Response,接着点击右边的Configure item:

接着点击右下角的add:

接着在parameter name这个输入框中,输入user_token,这个值由于后面会变成全局变量,因此绝对不能出错,要完整填入。然后选中下方token的值(不包含单引号),如图所示:

然后连续点击OK即可。
接着可以看到,宏已经设置好了:

此时宏还不能起作用,需要设置规则,告诉burp什么时候执行这个宏。
在session handling rules这里,点击add,然后再rule actions这里点击add,并输入run a macro:

然后如图所示添加user_token变量:

其余内容保持不变,点击右下角的OK。接着点击scope:

接下来就比较灵活了,上面表示该规则要在哪些模块里生效,下面表示要在哪些URL里生效。目前来看如果只是爆破的话,设置对所有URL生效就可以了,因为不是所有的URL都有user_token这个参数:

接着点击OK。
然后在proxy模块将刚才登陆页面的POST请求发送到repeater模块(注意先不要跟随重定向)。
第一次发送:

第二次发送:

此时发现token已经自动在变化了,说明我们刚才设置的规则已经生效了。
接着将该数据包发送到intruder模块。注意爆破时需要跟随重定向,否则无论密码正确与否,都是302,就无法分辨结果了:

之后通过爆破可得密码为password。
用爆破后的密码登陆:


三、爬虫脚本

使用爬虫脚本就不好多做解释了,懂得自然一看就懂,不明白的解释了也没用,大家自行使用即可,源码如下:

import requests
import reurl = "http://target_ip:port/login.php"def login(password):headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'}session = requests.session()session.headers.update(headers)req=session.get(url)#{}是限定符,{32}表示固定匹配32位,而[a-z0-9]本身表示匹配小写字母和任意数字,后面加上限定符表示必须连续匹配32个数字或小写字母#re.search()是匹配整个字符串,并返回第一个匹配成功的字符串,因此使用group()函数时,该函数只能为空参数或传入参数0来提取匹配的结果中的字符串user_token=re.search("[a-z0-9]{32}",req.text).group(0) data={"username":"admin","password":password,"Login":"Login",'user_token':user_token}#需要跟随重定向才能保证结果的准确性req=session.post(url=url,data=data,allow_redirects=True)html = req.textreturn htmlwith open('这里替换为你的密码字典.txt') as p:passlist =p.readlines()#开始爆破
for line in passlist:line = line.strip("\n")#随机选取一段只有登陆成功后才能看到的字符串,比如File Uploadif 'File Upload' in login(line):print( f'>>>爆破成功!正确密码为:{line}')breakelse:print(f'>>>正在使用密码{line}进行爆破尝试,未成功!')

运行效果如下:


四、小结

本文以DVWA登陆页面为例介绍并演示了含token的登陆页面如何使用burp宏或爬虫脚本实时更新token并进行爆破操作,其中爬虫是我个人重点推荐的,操作简单效率极高,burp相对会繁琐一些。

带token的登陆页面爆破方法(burp宏+爬虫脚本分享)相关推荐

  1. 电脑:任务栏点不动,DirectX错误,点不开登陆页面解决方法

    如果电脑出现下面情况,可以试试 1任务栏中软件中鼠标点不动, 出现无法显示或弹出错误 按crl+alt+r-打开运行程序或用win+r键 输入powershell,再输入以下 Get-AppXPack ...

  2. Android使用token维持登陆状态的方法

    什么是token token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地.在以后的网络请求时,客户端先查询本地的token,如果有 ...

  3. melogin.cn主页登录_手机怎么进入melogin.cn登陆页面

    家用的水星的无线路由器,设置网址是melogin.cn.家里没有电脑,想用手机来设置.那么手机怎么才能进入melogin.cn登陆页面?下面学习啦小编告诉你! 手机进入melogin.cn登陆页面的方 ...

  4. melogin.cn主页登录_手机怎么进melogin.cn登陆页面

    家用的水星的无线路由器,设置网址是melogin.cn.家里没有电脑,而用手机来设置水星路由器时,想要进入melogin.cn登陆页面.应该怎么操作呢?下面是学习啦小编给大家整理的一些有关手机进mel ...

  5. php编写用户登录页面,js+php实现静态页面实时调用用户登陆状态的方法

    这篇文章主要介绍了js+php实现静态页面实时调用用户登陆状态的方法,采用在静态页面中使用js调用php页面从而实现用户登录状态的实时调用功能,需要的朋友可以参考下 本文实例讲述了js+php实现静态 ...

  6. Wordpress在主题中自定义登陆页面并且禁用自带的登陆页面

    在使用Wordpress制作主题之后,不想要他自带的登陆页面以及地址. 1.新建一个用户页面来接管与登陆相关的动作 //在主题根目录下新建page-login.php,通过action获取用户动作,然 ...

  7. i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法

    i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法 参考文章: (1)i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法 (2)https://www.cnblogs.com/ ...

  8. 校园网登陆页面跳转不出来解决方法

    校园网登陆页面跳转不出来解决方法 可以输入任意一个ip地址即可解决 参考文章https://blog.csdn.net/o_ogou/article/details/102974200 原因: 百度的 ...

  9. 标梵信息分享App推广登陆页面的制作方法

    1. 列举了app推广登陆页面的常见形式和各种常见的衡量指标,梳理了做这个要注意的重点. 在移动互联网领域,登陆页面也称为推广页面.指南页面.登陆页面等.,通常以H5页面的形式显示.访客通过广告链接( ...

最新文章

  1. 数据结构~总结与文章目录
  2. XamarinAndroid组件教程设置自定义子元素动画(二)
  3. 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建
  4. linux系统下的grep命令功能与正则表达式详解
  5. 【ABAP】获取后台Job相关状态
  6. centos mysql 启动_MYSQL在centos上首次启动
  7. Python基础学习,面向对象的基本概念
  8. iphone微信美颜插件_iOS13.5 插件分享
  9. 牛人整理的统计学教材
  10. java获取结果集_Java-如何获取结果集上的列名
  11. java_home的变量是_JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用
  12. php 将汉字转为拼音,PHP汉字转换为拼音字头原理
  13. 使用 Python 从文件中提取 IP 地址
  14. 研发人员专用表情包上架了
  15. Android:禁止APP录屏和截屏
  16. 域名被劫持的处理办法和预防
  17. 关于一些像是哲学的思考???
  18. 2020年秋招回顾总结(2021届),目前已在上海入职工作,感恩亲人与朋友,未来,你好!
  19. Spring整合Quartz集群部署
  20. C#软件license管理(简单软件注册机制)

热门文章

  1. 拍照时脸背光怎么办?拍摄的逆光人像照如何修复才能更好看?
  2. 超简单步骤搭建公用DNS
  3. 多个知乎怎么批量管理?
  4. JAVA生成数字印章图片
  5. JS与AS通信(ExternalInterface类)
  6. 面部表情识别java_使用Python+OpenCV+dlib为人脸生成口罩
  7. 港股直通车“鸣笛”4000亿资金或被分流
  8. 线性表实现多项式相加c语言,用线性表实现多个多项式相加
  9. Java常用工具_IO流_字节流读写文件
  10. 【Java基础】IO流概述分类、字节流写数据、字节流写数据的三种方式及写数据的两个小问题