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

 

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

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 @ 2018-04-22 15:04  授客  阅读(957)  评论(0编辑  收藏  举报