前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >运维安全2.2—暴力破解的绕过和防范(验证码&token)实验

运维安全2.2—暴力破解的绕过和防范(验证码&token)实验

作者头像
阿dai学长
发布2019-09-28 23:24:40
2.4K0
发布2019-09-28 23:24:40
举报
文章被收录于专栏:阿dai_linux

概述

  • 暴力破解只不安全的验证码分享
    • on client
    • on server
  • Token可以防暴力破解吗?
  • 暴力破解常见的防范措施

验证码认证流程

验证码绕过实验

On client(client端)

场景展示:

请求分析:

代码语言:javascript
复制
POST /pikachu/vul/burteforce/bf_client.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Connection: close
Referer: http://127.0.0.1/pikachu/vul/burteforce/bf_client.php
Cookie: PHPSESSID=pdlm34mt5smvnjc3jca054otl0
Upgrade-Insecure-Requests: 1

username=ad&password=add&vcode=1WTL0&submit=Login

检查请求页面的源码:右击——查看页面源码

即,在前端用javascript实现的验证码。

将请求发送到Burpsuite 的 repeater模块:

repeater模块能复现请求,修改vcode后发送请求:

分析response信息:

由上图发现,在没有输入验证码的时候,直接返回的是"username or password is not exists~",说明提交的验证码并没有在后台做验证!

讲该请求发送到intruder模块,因为验证码并未进行校验,所以可以直接跳过验证码进行爆破,方法和2.1节一样,爆破结果如下:

不安全的验证码—On client常见问题
  • 使用前端js实现验证码(纸老虎);
  • 将验证码在cookies中泄露,容易被获取;
  • 将验证码在前段源码中泄露,容易被获取。

On server(server端)

场景展示:用正确的用户名和密码,错误的验证码登陆

然后用正确的验证码和错误的用户名密码登陆,进行请求分析:

代码语言:javascript
复制
POST /pikachu/vul/burteforce/bf_server.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 53
Connection: close
Referer: http://127.0.0.1/pikachu/vul/burteforce/bf_server.php
Cookie: PHPSESSID=pdlm34mt5smvnjc3jca054otl0
Upgrade-Insecure-Requests: 1

username=1111&password=2222&vcode=tkcgz7&submit=Login

将请求发送到repeater模块;

不提交验证码或输入错误验证码,看返回结果:

由此说明,后台对验证码做了校验;

检查验证码会不会过期,生成一个新的验证码,进行多次请求,看返回结果:

用同一个验证码请求多次,返回结果均为上图信息,说明验证码没有做过期处理,即验证码可以重复利用。

再次用2.1节中的方法进行破解,便可以爆破成功!

源码分析

未对验证码设置过期时间!

不安全的验证码—On server常见问题
  • 验证码在后台不过期,导致可以长期被使用;
  • 验证码校验不严格,逻辑出现问题;
  • 验证码设计的太过简单和有规律,容易被猜测。

防范措施

  • 设计安全的验证码(安全的流程+复杂而又可用的图形);
  • 风控规则:对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
  • 必要的情况下,使用双因素认证。

Token对防暴力破解的意义

一个简单的token示例:

一般做法:

  • 将token以"type= 'hidden'" 的形式输出在表单中
  • 在提交认证的时候一起提交,并在后台对其进行校验

但是, 由于其token值输出在前端源码中,容易被获取,因此也就失去了防暴的意义。

一般Token在防止CSRF上会有比较好的功效。

代码语言:txt
复制
 (adsbygoogle = window.adsbygoogle || []).push({});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 验证码认证流程
  • 验证码绕过实验
    • On client(client端)
      • 不安全的验证码—On client常见问题
    • On server(server端)
      • 源码分析
      • 不安全的验证码—On server常见问题
  • 防范措施
    • Token对防暴力破解的意义
    相关产品与服务
    验证码
    腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档