越权
一、介绍
- 定义:
- 水平越权: 使用 A 账号登陆到 B 账号
- 垂直越权: 使用普通用户账号获取到管理员账号的权限
二、 产生原理
- 前端安全造成: 界面
判断用户等级后,代码界面部分进行可选显示 - 后端安全造成: 数据库
管理员和普通用户同一个表,设置级别列
如果在访问数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本
三、漏洞
1. 水平越权
- 介绍: 水平权限攻击,也叫做访问控制攻击,服务器在接收到用户请求,修改某条数据时,没有对请求者进行检查,或者只是简单的从用户提交的表单中获取 userid, 导致攻击者可以修改不属于自己的数据。在所有更新语句中,都可能产生这个漏洞
- 攻击:
示例: 服务器从用户提交的表单中获取发送请求的请求者 userid , 一般都是隐藏域,但是我们可以拦截请求包对 useid 数据进行修改,从而可以修改不属于的自己的信息 - 防御:
从用户的加密认证的 cookie 中获取当前用户的 id, 并且在执行的 sql 语句中加入当前用户的 id 作为条件语句,由于 cookie 是加密的,所以攻击者无法修改加密信息
2. 垂直越权
- 介绍: 垂直权限攻击又叫权限提升攻击,原理是 WEB 应用没有做权限控制或仅仅只在菜单上做了权限通知,导致恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
- 攻击:
示例:
<tr><td><a href="/user.jsp">管理个人信息</a></td></tr>
<%if (power.indexOf("administrators")>-1){%>
<tr><td><a href="/userlist.jsp">管理所有用户</a></td></tr>
<%}%>
攻击者只需要猜中管理所有用户的页面url就可以越权操作了。
- 防御:
只需要在每个页面加载之前进行权限验证
4、相关知识点
1. Cookie/Session 机制详解
Cookie/Session 机制详解
写的很好,自己总结也是 CV ,就不浪费篇幅了
2. 基于 Token 的身份验证
- 使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录状态,大概流程如下:
- 客户端使用用户名跟密码请求登录
- 服务端收到请求,去验证用户名和密码
- 验证成功后,服务端会签发一个 Token, 再把这个 Token 发送给客户端
- 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
okie 里或者 Local Storage 里 - 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
- 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据