目录
前言
在没有做任何验证的登录表单 如果反复修改用户名密码持续提交 只要字母组合的字典足够大 时间足够 终会有一天破解出来用户名 密码 这样的行为有一个专业术语 要做 暴力破解。
token就是防止暴力破解的一种手段 每次进入后端都会刷新一个随机值 为表单增加隐藏token值随表单一起提交到后端,后端做校验...
然而一些token验证也有自己的不足........
工具准备
wamp sever 搭建php+mysql+apache本地测试环境
pikachu-master 本次测试的漏洞靶厂
BurpSuite 截断 intruder
一个小字典
页面token分析
访问pikachu-master -->暴力暴力-->token防爆破? 项目:pikachu-master/vul/burteforce/bf_token.php
将浏览器设置代理127.0.0.1:8080 提交几个正常的包 burp分析请求包及响应包
第一次的请求响应值为<input type="hidden" name="token" value="5582363662b5742659501047652" />
第二次post提交的表单携带的token 为5582363662b5742659501047652 这就是上一次的响应值
既然如此我们就可以预测下一个请求的token值它就在本次的响应包里 我们在下一次的请求包里加上这个token值 往此反复就可以实现暴力破解了
token可以提前获取 那么token 防爆也就失去了它意义了,(但还是很好地可以防止
CSRF的)
使用burp绕过token暴力破解密码
将请求包send to intruder里 选择Pitchfork ( 每个变量对应另一个唯一变量)
这里为了减少暴力破解复杂度假设我们已经知道了用户名admin 暴力破解密码
设置两个变量
设置变量1 为simple list / load将字典加载进去
设置变量2
进入options 找到Grep-Extract 根据提示 这个设置可以用从resposes里提取有用的信息投入到请求攻击力 这正式我们要用到的
勾选 Extract the following items from responses 点击add 添加规则
回到payloads设置界面对payload2进行设置 选择recursive grep 选择刚刚生成的规则
最后设置线程为1 不重发 因为多线程会影响token的顺序
点击start attack 等待结果 选择length排序
可以看到 我们已经暴力破解出admin的密码了123456
结语
除了token可以防爆 还以用图片验证码 信息验证码........
这也是生活中我们见到那么多验证码的原因一....