安全测试 一次会话安全测试漏洞实例总结
一次会话安全测试漏洞实例总结
By: 授客 QQ:1033553122
场景描述
通过手机号找回密码,如下,输入手机号,验证手机号,输入新密码,提交
漏洞描述
步骤1.按场景所述,打开找回密码页,输入账户(假设账户1)的手机号,验证手机号,然后进入重置密码页面,但是不提交
步骤2.浏览器新开一个标签,打开找回密码页,输入另一个账户(假设账户2)的手机号
步骤3.切换回步骤1的重置密码页面,输入新密码,确认密码,提交。
结果:重置了账户2的密码,账户1的密码保持不变。
原因分析
步骤1和步骤2,步骤3,操作共用一个会话信息,如下:
步骤1, 输入账户1手机号码,此时会自动像服务器端发起请求,校验手机号是否存在,同时服务器端收到请求,验证通过后,会在会话中,存储待修改密码的账户信息,形如:sessionid-reset-user=a_user_id
点击发短信并验证通过后,服务器会修改会话中是否可修改密码标识,形如:
sessionid-reset-predicate=true
步骤2. 同步骤1,会导致修改会话信息
sessionid-reset-user=b_user_id
步骤3.在步骤2的基础上,自然的去修改了账户2的密码。
解决方案
这里是一个操作序列 步骤1-步骤2-步骤3-步骤4-……,假如操作中断,从步骤1开始,或者之前操作过的某个步骤,那么把这个步骤之后的操作会话信息都清除掉。
例中,进行步骤2操作时,即验证手机号是否存在,就会重置、清除会话是否可修改密码标识信息,
delete sessionid-reset-predicate
这样就可以使漏洞中的步骤3操作失败。
作者:授客
微信/QQ:1033553122
全国软件测试QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
微信打赏
支付宝打赏 全国软件测试交流QQ群
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库