山东住房与城乡建设厅网站,在家开个代加工厂,html个人网站案例,电子商务网站开发课程设计论文概述 如果使用A用户的权限去操作B用户的数据#xff0c;A的权限小于B的权限#xff0c;如果能够成功操作#xff0c;则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。 一般越权漏洞容易出现在权限页面#xff08;需要登录的页面#xff0…概述 如果使用A用户的权限去操作B用户的数据A的权限小于B的权限如果能够成功操作则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。 一般越权漏洞容易出现在权限页面需要登录的页面增、删、改、查的的地方当用户对权限页面内的信息进行这些操作时后台需要对 对当前用户的权限进行校验看其是否具备操作的权限从而给出响应而如果校验的规则过于简单则容易出现越权漏洞。 因此在在权限管理中应该遵守 1.使用最小权限原则对用户进行赋权; 2.使用合理严格的权限校验规则; 3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件; 水平越权
抓个包看一下一般不是get请求post为多不过都一样开个代理抓个包看看 登录后点击“查看个人信息”可以看到自己的信息。 修改地址栏中的数据将usernamekobe修改为lili。结果看到了lili的信息。即水平越权。 以后找越权就是这么找自己登录个账号自己测试可以注册两个账号
那么可以猜测源码里是什么限制都没做的传什么数据进来就搜什么数据造成越权的原因
水平越权的防护
有个小技巧例如找escape这个函数不清楚它的作用在PHP手册、百度等查不到那么可能是自定义的函数或者去公用的函数库里面去查找 由此可知它的作用是 //这里如果不对获取的cookie进行转义则会存在SQL注入漏洞也会导致验证被绕过
它的作用是SQL注入防御的那么就先不管他了接下来继续看越权 想看登录的代码怎么写那就看这儿 $_SESSION[op][username]$username; $_SESSION[op][password]sha1(md5($password)); 将用户名和密码的SHA1哈希值存储到会话变量中。这里使用了双重哈希先MD5再SHA1来存储密码这是一种安全措施。 if(mysqli_num_rows($result)1){检查查询结果是否有且仅有一条记录这表示用户名和密码匹配。 $_SESSION[op][username] 这是一个二维数组数组里面套数组
改源代码 if($_SESSION[op][username]!$username){$username $_SESSION[op][username];} 保存后去测试一下就懂了 垂直越权
1、打开burp抓取“添加用户”的数据包
登录admin的先抓admin添加用户的包再登pikachu的普通账号抓分别给该包添加一个高亮显示等会好找 2、抓取普通用户的Cookie
不同的cookie代表了不同的权限 3、使用普通用户的Cookie普通用户权限发送添加用户的数据包
将添加用户的包发送Repeater 点击GO发送数据包可以尝试多点几次 发现多了好多bbb用户说明使用普通用户权限成功添加了账号即垂直越权漏洞。
防御方式
找到源代码增加以下或者自行手敲
if($_SESSION[op2][level]!1){ //垂直越权防御代码header(location:op2_login.php); //调整到登录页exit(); //退出程序
} 代码生效了跳转到登录页了且添加数据页不成功了 测试
挖越权的漏洞可以找类似开源的CMS源码下载下来自己部署一下自己注册两账号用相同的方式测试一下提交漏洞拿到赏金