欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

任意用户密码重置(六):应答中存在影响后续逻辑的状态参数

来源: 作者: 时间:2019-02-24 21:00 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区。我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证可暴破导致的任意用户密码重置问题。

密码找回流程一般包括获取短信验证码、校验短信验证码是否有效、设置新密码等三个步骤。在第二步,校验短信验证码是否有效的结果应保存在服务端,某些网站未在服务端保存而是错误地将结果状态值下发客户端,后续又依靠前端 js 判断是否可以进入第三步,那么,更改应答包中的状态值,可重置其他用户的密码。
案例一
在密码找回页面 http://www.xx.cn/yy/action/forgot 用攻击者手机号 13908081024 进入密码找回全流程,获取短信验证码 033128、输入图片验证码、输入短信验证码并提交:

服务端校验通过后,系统应答如下:

简单分析发现,校验通过时服务端并未向客户端 set-cookie,猜测服务端并未记录校验状态,是否进入设置新密码页面完全是由前端 js 基于应答状态决定的,那么,即便我没有短信验证码,通过将服务端下发给客户端的校验状态从“失败”改为“成功”,也能成功重置找回账号密码。
具体而言,以信息搜集时找到的客服手机号 13980808888 为例。输入手机号、获取短信验证码、输入图片验证码、输入错误的短信验证码 123123 后提交:

由于短信验证码错误,系统校验肯定失败,系统应答如下:

拦截该应答,用前面抓取校验成功的应答包替换之:

放行至客户端,顺利进入新密码设置页面:

输入新密码 PenTest1024 后提交,页面提示密码修改成功:

尝试用 13980808888/PenTest1024 登录,验证成功:

案例二
在密码找回页面 http://www.xx.cn/yy/forgot 用攻击者手机号 13908081024 进入密码找回全流程,获取短信验证码 2118、输入短信验证码并提交:

服务端校验通过后,系统应答如下:

简单分析发现,校验通过时服务端并未向客户端 set-cookie,将服务端下发给客户端的校验状态 code 改为“0000”,可以重置其他用户密码。
具体而言,以土豪手机号 13888888888 为例。输入手机号、获取短信验证码、输入错误的短信验证码 1234 后提交。由于短信验证码错误,服务端校验失败,应答如下:

拦截该应答,用前面抓取校验成功的应答包替换之后,放行至客户端,顺利进入新密码设置页面:

输入新密码 PenTest1024 后提交,页面提示密码修改成功。尝试用 13888888888/PenTest1024 登录,验证成功:

加固措施
服务端校验短信验证码后应通过 cookie 记录状态,不应在前端通过状态参数判断。另外,服务端应限制枚举等恶意请求。
 

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区。我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证可暴破导致的任意用户密码重置问题。

内容来自无奈安全网

密码找回流程一般包括获取短信验证码、校验短信验证码是否有效、设置新密码等三个步骤。在第二步,校验短信验证码是否有效的结果应保存在服务端,某些网站未在服务端保存而是错误地将结果状态值下发客户端,后续又依靠前端 js 判断是否可以进入第三步,那么,更改应答包中的状态值,可重置其他用户的密码。
案例一
在密码找回页面 http://www.xx.cn/yy/action/forgot 用攻击者手机号 13908081024 进入密码找回全流程,获取短信验证码 033128、输入图片验证码、输入短信验证码并提交:

服务端校验通过后,系统应答如下:

简单分析发现,校验通过时服务端并未向客户端 set-cookie,猜测服务端并未记录校验状态,是否进入设置新密码页面完全是由前端 js 基于应答状态决定的,那么,即便我没有短信验证码,通过将服务端下发给客户端的校验状态从“失败”改为“成功”,也能成功重置找回账号密码。

copyright 无奈人生

具体而言,以信息搜集时找到的客服手机号 13980808888 为例。输入手机号、获取短信验证码、输入图片验证码、输入错误的短信验证码 123123 后提交:

由于短信验证码错误,系统校验肯定失败,系统应答如下:

拦截该应答,用前面抓取校验成功的应答包替换之:

放行至客户端,顺利进入新密码设置页面:

输入新密码 PenTest1024 后提交,页面提示密码修改成功:
www.wnhack.com


尝试用 13980808888/PenTest1024 登录,验证成功:

案例二
在密码找回页面 http://www.xx.cn/yy/forgot 用攻击者手机号 13908081024 进入密码找回全流程,获取短信验证码 2118、输入短信验证码并提交:

服务端校验通过后,系统应答如下:

简单分析发现,校验通过时服务端并未向客户端 set-cookie,将服务端下发给客户端的校验状态 code 改为“0000”,可以重置其他用户密码。

本文来自无奈人生安全网


具体而言,以土豪手机号 13888888888 为例。输入手机号、获取短信验证码、输入错误的短信验证码 1234 后提交。由于短信验证码错误,服务端校验失败,应答如下:

拦截该应答,用前面抓取校验成功的应答包替换之后,放行至客户端,顺利进入新密码设置页面:

输入新密码 PenTest1024 后提交,页面提示密码修改成功。尝试用 13888888888/PenTest1024 登录,验证成功:

加固措施
服务端校验短信验证码后应通过 cookie 记录状态,不应在前端通过状态参数判断。另外,服务端应限制枚举等恶意请求。
  内容来自无奈安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。