先介绍一下什么是token验证:
基于Token的身份验证流程
- 客户端使用用户名和密码请求登录
- 服务端收到请求,验证登录是否成功
- 验证成功后,服务端会返回一个Token给客户端,反之,返回身份验证失败的信息
- 客户端收到Token后把Token用一种方式存储起来,如( cookie / localstorage / sessionstorage / 其他 )
- 客户端每次发起请求时都会将Token发给服务端
- 服务端收到请求后,验证Token的合法性,合法就返回客户端所需数据,反之,返回验证失败的信息
Token的特点
• 随机性:每次的token都是不一样的
• 不可预测性:没有规律,无法预测
• 时效性: 可以设置token的有效时间
• 无状态、可扩展:由于只是一个算法,扩展起来非常方便
生成Token的解决方案有许多,常用的一种就是 Json Web Tokens(JWT) .
同样的,这题的token在验证后也没有销毁,我们可以随机使用一个token来持续对账号密码爆破
接下来保证token值不变的情况下,进行暴力破解,由于是三个变量,因此选择Pitchfork类型爆破
设置线程数为1,保证只有获取上一个请求返回的taken值才能,做下一次请求
在Options中的Grep-Extract选择Add,出现如下图所示,点击Refetch response 获取返回的包,找到返回的token值,选中并复制下来。点击确定(注意:一定要在选中token的状态下点击确定)顺便复制一下token的值23209659962b5856e4744648437
接着下拉找到options中到redirections模块选择always
然后对目标1账号和目标2密码跟之前一样添加弱口令:
对token的payload使用递归搜索:
开始攻击:
注意:
出现这个原因是:递归grep有效负载不能用于多个请求线程。
把这个最大并发请求数改成1就行了。