逻辑漏洞----任意用户密码重置

本文阅读 5 分钟

任意用户密码重置漏洞是:未经用户本身授权,非法修改任意账号密码的一种攻击方式;任意用户密码重置影响系统的稳定性,可由此作为攻击入口,进行持续攻击。

常见的任意用户密码重置类型大致分为四种:
1、验证码设计缺陷
2、绕过验证方式
3、权限未绑定
4、数据库未授权访问

1、验证码不失效

1.1、检测方法

获取验证码时,由于验证码不失效,可针对验证码进行枚举。

1.2、修复方法

1、优先进行验证码的校验。 2、验证码校验过一次即失效,再次验证需要重新生成新的验证码。 3、设定提交校验的验证码的有效期,时间不宜过长。 4、验证码的校验应当在服务器端进行,避免客户端校验,以防绕过。

2、仅判断验证码是否正确

2.1、检测方法

重置密码过程中,通过手机号获取验证码,但重置密码时仅校验了验证码是否正确,未对手机号和验证码的关联性做验证。

2.2、修复方法

校验手机号和验证码是否匹配。

3、验证码在响应中返回

3.1、检测方法

发送获取验证码的请求,抓取响应,在响应包中可查看验证码。

3.2、修复方法

验证码避免返回在响应中。

1、无任何验证

1.1、检测方法

密码重置页面五任何验证,通过账号,给定验证码及新密码即可更改。

1.2、修复方法

验证手机用户的有效性,获取短信验证码,确认重置密码时,验证手机号与短信验证码是否匹配。

2、修改返回包,绕过验证

2.1、检测方法

此方法一般是通过拦截响应包,修改响应中的code等参数,将其更改未成功验证的值,进行绕过。

2.2、修复方法

设置密码界面,提交修改密码处再次验证验证码。

3、直接访问设置密码界面

3.1、检测方法

重置密码的链接可在前端js中获取,直接访问重置密码的URL进行用户密码重置。

3.2、修复方法

修改js代码,删除密码重置api,严格控制用户权限。

4、邮箱中密码重置连接可fuzzing

4.1、检测方法

找回密码时,系统发送一个找回密码的链接到邮箱中,访问此链接,在URL中会明文显示出邮箱,并在页面中显示处邮箱和手机号,输入新密码,成功设置。

4.2、修复方法

URL中不明文显示email、id、手机号等敏感信息;手机号等信息不自动显示、链接中增加随机值校验。

1、未判断手机号是否与用户绑定

1.1、检测方法

重置密码时未鉴权、未校验手机号是否与此用户匹配

1.2、修复方法

对用户进行鉴权,判断id是否为当前用户的id;更新密码时,验证旧密码。

2、Session覆盖导致任意用户密码重置

2.1、检测方法

用攻击者的session替换攻击者的session,绕过系统验证,重置被攻击者的密码。

2.2、修复方法

判断session与用户的匹配关系。

3、越权导致修改任意用户密码

3.1、检测方法

更新密码时未进行鉴权,可通过修改请求中ID等参数修改其他用户密码。

3.2、修复方法

对用户进行鉴权,判断id是否为当前用户的id;更新密码时,验证旧密码。

数据库未授权访问,导致可直接访问数据库中的users表,修改任意用户的密码。 修复建议:对数据库设置访问权限,禁止未授权访问。

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/121165545
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复