SESSION覆盖攻击


实验使用session登陆的php demo源码进行测试,源码下载链接

使用前需要先将数据库文件cms.sql导入到cms数据库(没有就先创建一个),默认有两个账户:admin/123456,admin1/admin.

转载自:BayMRX

SESSION覆盖攻击

session覆盖攻击是一种非常流行的针对session的攻击方式,攻击者通过截获正常用户在某个网站的session id,就可以模仿这个用户,实现下一步的攻击。通常会被用作恶意重置用户的密码。

SESSION覆盖过程

使用浏览器访问我们的session源码网站目录,可以看到有账户、密码和密文的提交框

先使用admin账户登录,并输入密文cxk后登录

为了方便实验,在页面展示出了当前用户的session id

然后再打开另外一个浏览器,使用我们另外一个账号admin1登录,密文填写任意值:

这里使用另外一个浏览器是因为,在我们登录账号的时候,由于session的原因,浏览器会保存我们当前账号的登陆状态,如果不退出浏览器或者退出账号,就一直处于当前账号的登陆状态,无法登录进其他账号

打开BurpSuite对admin1进行拦截,刷新页面,可以在BurpSuite里看到admin1的session_id:

将admin的session id改到在admin1抓的包中,然后点击Forward

可以看到,我们在admin1账户下看到了admin账户下的密文信息

至此,我们的session覆盖实验就成功了

利用seesion覆盖实现密码重置

如果某个网站对密码重置的流程不做过多的校验的话,可以使用session覆盖的方法对其他用户的密码进行恶意重置。具体流程如下:

  1. 首先在网站注册一个自己的账号,并进入到密码重置流程中
  1. 继续重置流程,直至完成邮箱或者手机号校验(只剩填写新密码这一步)

  2. 在浏览器另开一个标签,进入另一个密码重置的页面

  3. 在输入完要攻击的账号信息,等服务器确认了你要恶意重置的账号后,再切换到第二步中填写新密码的页面

  4. 输入设置的新密码并提交就可以实现对其他账号的密码重置

注意这种利用session覆盖导致的密码重置漏洞并非所有网站都存在
参考:某网session覆盖导致重置密码漏洞


文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录