安全测试 一次会话安全测试漏洞实例总结

 

一次会话安全测试漏洞实例总结

By: 授客 QQ:1033553122

 

场景描述

通过手机号找回密码,如下,输入手机号,验证手机号,输入新密码,提交

安全测试 <wbr>一次会话安全测试漏洞实例总结

 

漏洞描述

步骤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操作失败。

 

posted @   授客  阅读(969)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示