赞
踩
目录
由于没有对登录页面进行相关的防暴力破解机制,如无验证码、有验证码但验证码未在服务器端校验以及无登录错误次数限制等,导致攻击者可通过暴力破解获取用户登录账户及口令,从而获取网站登录访问权限
没有验证码,错误次数限制,而且用户名密码明文传输,所以用 burpsuit 抓包后用字典自动化爆破
注:只是为了示范和熟悉常用渗透思路,并没有必要用太多 payload,比较费时间,实际测试可以用 Top500 用户名密码
option 标签页中的 Request Engine 等参数可保持默认即可,点击 payloads 标签页里的 start attack 即可开始爆破,结果如下:
没有验证码,错误次数限制,而且用户名密码明文传输,所以用 burpsuit 抓包后用字典自动化爆破
通过对比可知,low 和 medium 两个的等级代码区别有两点:
通过登陆失败后跟随 302 来到 /vulnerabilities/brute/index.php 页面后,发现页面代码里隐藏的 user_token 参数,每次请求该页面后都会获得新的 user_token,由此可知,每次请求登录提交用户名和密码时,都要带上页面提供的 user_token,且有效性只有一次,防止重放爆破。所以我们要想爆破就必须先获得 user_token 值再提交。
添加 session macro 宏自动获得并替换 user_token
我们可以借助burpsuit macro 宏功能来完成发送爆破请求之前请求 index 页面获得 user_token 值
选择 Project options 模块下的 Sessions 标签页按照下图中的步骤提示操作即可:
填写 Rule Decription 方便了解区分该规则用途
点击 add 按钮打开 macro editor,随后会自动弹出 macro recorder,选择需要从中获得消息的流量记录进行编辑
选择记录后点击 OK 返回 macro editor 界面,选择要编辑的记录点击 Configure item
添加响应报文里的参数获取位置
填写 Parameter name,必须与实际获取参数名称相同,然后选择参数值获取位置,起始匹配正则会在你选择后自动生成,点击 OK
界面回到 Configure Macro Item,出现刚才新增的参数获取位置,点击 OK
点击 OK
点击下图 2 的位置,仅更新请求中的指定参数,这里我们指定仅更新user_token 参数,这里意味着当 macro 请求index.php 页面获得 user_token参数后,会把我们发送的请求中的 user_token 参数值给替换掉,防止出现 CSRFtoken is incorrect 报错。点击 OK 返回。
选择 Scope 标签限制 macro 规则起效范围
限制 macro 功能起效范围
我们只需要针对目标 host 发送请求,在 Repeater 和 Intruder 模块力起效即可
repeater 测试验证 macro 成功获得并更新 user_token 参数
这是我们在 repeater 里发送 high 的登录请求报文发现,每次发出请求后,报文里的 user_token 参数就会自动更新,而响应页面的 CSRF token is incorrect也没有了,报错信息重新变为之前的用户名或密码不正确。
解决了 high 新出现的 CSRF Token 问题,剩下的就与之前爆破步骤差不多了
Intruder 开启跟踪重定向
由于可能出现 302,所以为方便查看最终结果,我们跟随重定向,调整 Options 标签页中的Redirections 为 Always。
开始攻击,一切顺利,结果如下:
通过对比可知,medium 和 high 两个的等级代码区别有四点:
通过之前的流量对比和代码分析,我们大致可以将 Impossible 源码对比结果总结如下:
加入图片(验证码动态生成且满足随机性)或者短信验证码(验证码具备超时时限一般为1分钟,且在该时限内错误次数超过3次则进行锁定1分钟后方能重新获取验证码,超时后验证码自动失效)!验证码必须在服务器端进行校验,客户端的一切校验都是不安全的!
对用户输入进行特殊字符转义,关键词删改替换,预编译,防止 SQL 注入
验证码可爆破,即验证码过于简单,例如验证码中字符数量过少,比如只有四位组成,且只包含 0-9 的数字还没有干扰点
验证码复用,即登录失败后验证码不刷新,仍然可以使用上一次登录时的验证码且有效,存在爆破风险漏洞
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。