35:WEB漏洞-逻辑越权之找回机制及接口安全
知识点
找回重置机制
- 客户端回显:验证码在客户端浏览器或数据包中回显
- Response状态值:单独请求回复状态值判断验证码是否正确
- 验证码爆破:验证码纯数字过于简单
- 找回流程绕过:跳过中间验证步骤,直接抓包最后一步
接口调用乱用
- 短信轰炸,来电轰炸等
本课重点:
- 案例1:找回密码验证码逻辑-爆破测试-实例
- 案例2:墨者靶场密码重置-验证码套用-靶场
- 案例3:手机邮箱验证码逻辑-客户端回显-实例
- 案例4:绑定手机验证码逻辑-Rep状态值篡改-实例
- 案例5:某APP短信轰炸接口乱用-实例接口调用发包
案例1:找回密码验证码逻辑-爆破测试-实例
PHP云人才系统(Phpyun) V3.2下载:
- http://downcode.com/downcode/j_16621.shtml
- https://pan.baidu.com/s/1P73QFmEhY6f350CvmnOJNg 提取码:xiao
该系统有绑定手机号功能,绑定时,需要验证码,可以配合bp的Intruder模块对验证码进行暴力破解
暴力破解时需要考虑
- 验证码的复杂度:验证码越复杂,成功率越低
- 验证码的时效性:验证码一般都有有效时间,比如1分钟/5分钟,想想你能不能在验证码有效时间内将验证码爆破出来
- 绑定失败锁定策略:有的系统可能会有限制,比如绑定3次失败则不能再绑定
- 如果有图片验证码,考虑是否可以使用工具识别
案例2:墨者靶场密码重置-验证码套用-靶场
靶场地址:https://www.mozhe.cn/bug/detail/66
绕过思路:攻击者先用手机号A发送一条正确的验证码,然后将手机号改为B,实现用A的验证码重置B账户密码。
绕过原理:服务器只查询输入的短信验证码与服务器发送过的,不会把短信验证码和手机号绑在一起。
过程:
<1>打开页面,输入18868345809,向服务器请求短信验证码。
<2>新开页面输入17101304128,向服务器请求短信验证码。
<3>将18868345809的短信验证码输入到17101304128的短信验证码处。
<4>将17101304128原本的图片验证码输入。
<5>点击重置,获取key。
案例3:手机邮箱验证码逻辑-客户端回显-实例
案例演示1:真实案例
该网站邮箱验证处,密码在客户端回显
案例演示2:PHP云系统
该系统有绑定手机号功能
发送验证码时抓包,发现验证码在cookie中回显
案例4:绑定手机验证码逻辑-Rep状态值篡改-实例
<1>某真实案例
<2>该APP有修改密码功能
<3>输入正确的手机号,错误的验证码,点击下一步,截断响应
<4>将响应修改为验证码正确时的响应(前期测试获取)
<5>直接进入下一步重置密码
<6>输入新密码,点击确定,密码重置成功
<7>使用新密码,成功登录系统。
绕过原理:该APP重置密码功能分为2个页面,第一个页面,输入手机号、验证码,第二个页面,重置密码,我们可以通过修改第一个页面的响应数据来绕过验证码验证,直接进入下一个页面重置密码。
案例5:某APP短信轰炸接口乱用-实例接口调用发包
某系统注册账号功能处存在短信轰炸漏洞
抓取发送短信的数据包,重放N次,可以对该手机号发送N条验证码。