绕过token进行密码爆破(包含python攻击脚本)

绕过token进行密码爆破

  1. 预备知识

    • 什么是Token?

      Token是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧。Token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

    • 基于 Token 的身份验证方法:

      1.客户端使用用户名跟密码请求登录。

      2.服务端收到请求,去验证用户名与密码。

      3.验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端。

      4.客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里。

      5.客户端每次向服务端请求资源的时候需要带着服务端签发的 Token。

      6.服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。

  2. 实验准备

    1. DVWA靶场

      image-20230729223843544

    2. Burp suite 2022.9.5(爆破工具)

      image-20230729223921585

    3. python3环境(后附python爆破脚本)

  3. 登录流程

    • 用户请求GET请求网站首页,服务器给用户返回一个session,Token藏在Session中同时也在响应页面

      image-20230729224437039

    • 用户输入账号密码通过post请求自动将Token作为数据发送给服务器

    • 服务器将前后两个Token进行对比,如果一致,再判断账号密码是否正确

      image-20230729225340992

  4. Burpsuite爆破思路

    • 利用Burpsuite获取服务器第一次返回的Token
    • 利用第一次的Token和账号密码提交POST请求
    • 选定密码作为爆破参数,进行Intruder模块爆破
  5. Burp的两种爆破方法

    1. 设置宏插件进行爆破

      首先开启代理,抓取get请求页面,获取Token

      image-20230729230237174

      放行GET页面让Burpsuite有记录

      image-20230729230419676

      添加Session抓取规则

      image-20230729230720031

      添加宏规则,选中步骤3中的Run A macro,添加一个宏规则

      image-20230729231008813

      选中刚才放行的GET请求,点击OK

      image-20230729231136278

      配置宏规则

      image-20230729231234604

      添加规则

      image-20230729231255093

      选择需要抓取的Token的内容,同时设置和响应中相同的参数名字,点击OK

      这里发现我们的宏规则已经配置成功,继续点击OK

      image-20230729231534481

      继续OK

      image-20230729231628454

      设置仅使用刚才设置的参数,设置完毕点击close,点击OK

      image-20230729231945637

      配置影响的URL

      image-20230729232127694

      设置完毕后就可以爆破了,输入账号密码抓取POST请求包

      image-20230729232323082

      右键选择Send to Intuder,发送到Intuder模块,在Intuder模块中选中密码作为爆破参数

      image-20230729232657214

      选择payload,设置爆破的字典

      image-20230729232814503

      选择总是重定向,因为输入账号密码以后的网站会被服务器进行重定向
      image-20230730223654002

      在Burpsuite2022.9.5中需要选择自定义攻击线程为1,线程过多Token容易混乱爆破不出来(我就是因为线程太多,爆破了好多次都失败了),而且这个版本的Burpsuite很坑需要手动把窗口拉大或者放大,才可以看到自定义的线程。

      image-20230729233345145

      设置完毕以后开始爆破,时间取决于你的字典,如果是1个线程还没有办法爆破成功,可能是你的字典里面没有这个密码,在爆破页面我们将返回长度按照从大到小排列,就可以看到爆破成功的密码和其他的米密码长度不同。就可以确定正确密码,也可以查看服务在跳转以后的返回页面。密码就是:password

      image-20230729233741808

    2. 利用Pitchfork模式直接爆破密码和Token

      同样抓取POST请求包,直接发送到Intuder模块选择Pitchfork模式

    image-20230729234247312

    选择密码和Token为爆破目标

    image-20230729234338312

    在Options中先选择总是跳转,然后设置查找规则,选中响应中的Token作为匹配规则

    image-20230729235008080

    设置完毕以后,设置Token的payload类型

    选择线程进行攻击

    image-20230729235424494

    按照同样的方法可以看到正确的密码为password

    image-20230729235604973

  6. 使用python脚本进行自动化Token绕过爆破

    #coding:utf-8
    import requests
    import re
    
    
    url = input("请输入您要爆破的地址:")
    def login(password):
        session = requests.session()#记录request第一次的session
        req=session.get(url)#利用session进行get请求
        token = re.findall(r'value=\'(.+)\'', req.text) #利用正则寻找第一次get请求中的user_token
        user_token = token[0]#将get请求中的token保存下来
    
        data={"username":"admin","password":password,"Login":"Login",'user_token':user_token}#post请求中需要的数据
        req=session.post(url=url,data=data,allow_redirects=True)#发送post请求,并且允许跳转
        html = req.text#获取post请求以后的respond
        return html
    
    #读取爆破需要用到的字典
    with open('./top1000_02.txt') as p:
        passlist =p.readlines()
        p.close()
    
    for line in passlist:
        line = line.strip("\n")
        print(line)
        if 'Welcome' in login(line):#判断是否爆破成功,如果成功直接停止
            print( "[* 密码 is %s *]" % line )
            break
    

    image-20230730000103316

  7. 总结

    绕过Token就是抓取服务器第一次返回客户端的Token,带着这个Token配合密码字典进行爆破。Token的设置就是为了防止CSRF(跨站请求伪造)攻击的,确保发起请求的人是客户本人,如果不是及时拦截。想要交流这个爆破脚本的可以留言。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Burp Suite可以通过不同的方式绕过token验证。其中,一种方式是当csrf_token存在于当前页面时,可以使用第一种绕过姿势。另一种方式是当csrf_token不存在于当前页面时,可以使用第二种绕过姿势。\[1\] 现在的网站安全性越来越高,防爆破机制也越来越多,token验证是其中比较常见的一种。每次客户端请求服务器时,服务器会返回一个token,下次请求时,客户端需要带上这个token,否则服务器认为请求不合法。而且这个token不可重复使用,每次请求都将生成新的token,并导致旧的token失效。\[2\] 在Burp Suite中,可以通过设置作用域来绕过token验证。如果想让代理到Burp的请求都使用这个规则,在Tools Scope中勾选Proxy。然后在Intruder中加入设置的变量,不需要写值,开始攻击,就会自动读取csrftoken了。\[3\] #### 引用[.reference_title] - *1* *3* [使用Burp Suite 两种方式绕过 CSRF_TOKEN](https://blog.csdn.net/slslslyxz/article/details/111302778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [BurpSuite 暴力破解之绕过 token](https://blog.csdn.net/pentestnotes/article/details/118681855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值