pikachu--csrf token & token防爆破?

刚开始玩pikachu,在其中看到token验证相关的内容,记录一下破解的过程。

目录

 

 

Token

首先了解一下什么是token

Token在计算机身份认证中是令牌(临时)的意思,一般在网站上用于身份验证,一般流程如下:

 

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
  7. APP登录的时候发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果成功,以某种方式比如随机生成32位的字符串作为token,存储到服务器中,并返回token到APP,以后APP请求时,
  8. 凡是需要验证的地方都要带上该token,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让他重新登录。其中服务器上token设置一个有效期,每次APP请求的时候都验证token和有效期。

https://www.cnblogs.com/lufeiludaima/p/pz20190203.html

 

初次遇到token时很头疼,因为它一般用完一次就会失效,为爆破或是CSRF带来阻碍

 

pikachu--token防爆破?(暴力破解

初见

 

 

 (本关以猜测用户admin的密码为例)

 

随便输入一段密码,先用bp抓包分析一下请求数据包

 

发现使用post方式传送数据包,方框部分发现带有token。

按照普通流程爆破看看:

基本上token不对,密码验证马上就会pass掉,要换一种爆破方式,将token的值加入被爆破的行列

 

 

token爆破

由于爆破的项目增加了一个,所以在Intruder中采用“pitchfork”模式爆破

 

 

 

 payload的选取:第一部分(密码)正常填写,第二部分(token)需要设置递归搜索

(所谓recursive grep,就是从上一次的响应结果中,取得部分特定内容作为下次请求的Payload的模式)

 

 

 

 

 按照提示在“extract grep”处设置递归选取的内容:

 

另外涉及递归与重定向,线程数设置为1,重定向选项设置为“always”

 

开始爆破,发现有长度不一样的相应数据包,查看发现爆破成功,payload1处即为密码:

 

 

 

 

 

pikachu--CSRF token(CSRF

选择用户lili登录后(秘密123456),查看lili的信息

 

 

发现修改个人信息的页面,点击submit抓个包看看先

 

 

发现存在token验证,构造一般的PoC肯定不行。在这里用到插件“CSRF Token Tracker”,在“Extender”里面即可下载:

 

 

(这里我已经下载了,正常这里是“install”)

 

这里代表token的变量名字就叫token,在插件中添加一条规则:

 

 

将上文的数据包发送到“Repeater”,发送数据包(这里我将能改的信息都改成1),查看能否修改:

 

 

 

显然修改未成功,再点击“Follow redirection”,发现修改成功:

 

 

 

 

在网页中验证:

 

 

 

 

 

 

 

posted @ 2022-07-20 15:25  WangWangDui  阅读(2235)  评论(1编辑  收藏  举报