最终效果:普通用户向服务器提交添加用户的表单也可以实现用户添加;
过程:获取数据包--发送数据包--查看效果
1. 攻击者获得表单对应数据包
方法:本地搭建环境抓取数据包
本地登录admin账户后,进行添加用户操作,抓取对应表单数据包。
2. 攻击者发送数据包
攻击者先以普通用户身份登录获得cookie,然后将cookie字段用于第一步得到的数据包中
tip:如果你只是又开了一个窗口登录了普通用户,或许会发现用户的cookie和admin的cookie是一样的。这和session的分发机制有关,不影响实验,你可以在抓到数据包之后就退出admin登录。
3. 查看效果
成功!
注意:
为什么同时登录了用户和管理员,当管理员退出登录后直接提交添加表单会添加失败?
原因在于:退出登录后当前cookie就失效了。刷新会发现需要你重新登录,然后使用新的cookie才会成功。
漏洞原因及修复方案:
我认为这里漏洞产生的原因就在于:在一个浏览器上同时登陆普通用户和管理员时使用的是相同的cookie,并且在进行添加操作时也单检查了cookie。这意味着即使不是管理员只要成功登录获得了cookie就拥有了管理员权限,获得了数据包后使用当前cookie就可以进行管理员操作。
针对这里垂直越权修复方案:
1. 对于特权操作:不单检查cookie,同时检查当前用户id是否具有相应权限
2. 使用token