带token的登陆页面爆破方法(burp宏+爬虫脚本分享)
文章目录
- 前言
- 一、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宏+爬虫脚本分享)相关推荐
- 电脑:任务栏点不动,DirectX错误,点不开登陆页面解决方法
如果电脑出现下面情况,可以试试 1任务栏中软件中鼠标点不动, 出现无法显示或弹出错误 按crl+alt+r-打开运行程序或用win+r键 输入powershell,再输入以下 Get-AppXPack ...
- Android使用token维持登陆状态的方法
什么是token token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地.在以后的网络请求时,客户端先查询本地的token,如果有 ...
- melogin.cn主页登录_手机怎么进入melogin.cn登陆页面
家用的水星的无线路由器,设置网址是melogin.cn.家里没有电脑,想用手机来设置.那么手机怎么才能进入melogin.cn登陆页面?下面学习啦小编告诉你! 手机进入melogin.cn登陆页面的方 ...
- melogin.cn主页登录_手机怎么进melogin.cn登陆页面
家用的水星的无线路由器,设置网址是melogin.cn.家里没有电脑,而用手机来设置水星路由器时,想要进入melogin.cn登陆页面.应该怎么操作呢?下面是学习啦小编给大家整理的一些有关手机进mel ...
- php编写用户登录页面,js+php实现静态页面实时调用用户登陆状态的方法
这篇文章主要介绍了js+php实现静态页面实时调用用户登陆状态的方法,采用在静态页面中使用js调用php页面从而实现用户登录状态的实时调用功能,需要的朋友可以参考下 本文实例讲述了js+php实现静态 ...
- Wordpress在主题中自定义登陆页面并且禁用自带的登陆页面
在使用Wordpress制作主题之后,不想要他自带的登陆页面以及地址. 1.新建一个用户页面来接管与登陆相关的动作 //在主题根目录下新建page-login.php,通过action获取用户动作,然 ...
- i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法
i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法 参考文章: (1)i-Shanghai无法跳转登陆页面/登陆页面打不开的解决方法 (2)https://www.cnblogs.com/ ...
- 校园网登陆页面跳转不出来解决方法
校园网登陆页面跳转不出来解决方法 可以输入任意一个ip地址即可解决 参考文章https://blog.csdn.net/o_ogou/article/details/102974200 原因: 百度的 ...
- 标梵信息分享App推广登陆页面的制作方法
1. 列举了app推广登陆页面的常见形式和各种常见的衡量指标,梳理了做这个要注意的重点. 在移动互联网领域,登陆页面也称为推广页面.指南页面.登陆页面等.,通常以H5页面的形式显示.访客通过广告链接( ...
最新文章
- 数据结构~总结与文章目录
- XamarinAndroid组件教程设置自定义子元素动画(二)
- 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建
- linux系统下的grep命令功能与正则表达式详解
- 【ABAP】获取后台Job相关状态
- centos mysql 启动_MYSQL在centos上首次启动
- Python基础学习,面向对象的基本概念
- iphone微信美颜插件_iOS13.5 插件分享
- 牛人整理的统计学教材
- java获取结果集_Java-如何获取结果集上的列名
- java_home的变量是_JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用
- php 将汉字转为拼音,PHP汉字转换为拼音字头原理
- 使用 Python 从文件中提取 IP 地址
- 研发人员专用表情包上架了
- Android:禁止APP录屏和截屏
- 域名被劫持的处理办法和预防
- 关于一些像是哲学的思考???
- 2020年秋招回顾总结(2021届),目前已在上海入职工作,感恩亲人与朋友,未来,你好!
- Spring整合Quartz集群部署
- C#软件license管理(简单软件注册机制)
热门文章
- 拍照时脸背光怎么办?拍摄的逆光人像照如何修复才能更好看?
- 超简单步骤搭建公用DNS
- 多个知乎怎么批量管理?
- JAVA生成数字印章图片
- JS与AS通信(ExternalInterface类)
- 面部表情识别java_使用Python+OpenCV+dlib为人脸生成口罩
- 港股直通车“鸣笛”4000亿资金或被分流
- 线性表实现多项式相加c语言,用线性表实现多个多项式相加
- Java常用工具_IO流_字节流读写文件
- 【Java基础】IO流概述分类、字节流写数据、字节流写数据的三种方式及写数据的两个小问题