越权漏洞
越权漏洞,顾名思义,就是做了你本不能做的事。
越权有两种,平行越权和垂直越权。
平行越权,就是越的是和你一个level的,例子:在一个预约网站,你本只能看你自己的预约信息,但通过某种手段,你可以查看其他人的预约信息。
垂直越权,就是越的是比你高level的,例子:在一个预约网站,你本只能看自己的预约信息,只有管理员能删除你的预约信息,但通过某种手段,你可以删除你的甚至其他人的预约信息。
原因:在进行操作的时候没有检查每一个操作的用户权限,只检查了用户是否已登录。
预防方法:有关权限的请求,在请求链接中带上用户信息并验证cookie中的信息是否与链接中的用户是否匹配
靶场实例
水平越权
当查看个人信息的时候,很明显的发现链接里面出现了用户名
这时候尝试输入其他的用户名lili(如果不知道其他的用户名爆破即可)
就可以看到lili用户的信息了
这个漏洞代码在这个函数
/*op1的check login*/ function check_op_login($link){ if(isset($_SESSION['op']['username']) && isset($_SESSION['op']['password'])){ $query="select * from member where username='{$_SESSION['op']['username']}' and sha1(pw)='{$_SESSION['op']['password']}'"; $result=execute($link,$query); if(mysqli_num_rows($result)==1){ return true; }else{ return false; } }else{ return false; } }
检查了session是否有用户名和密码,然后检查数据库是否有匹配的用户名和密码,但没检查访问用户是不是被查看用户
修复方法:在查看信息的页面插这个判断,检查被查询的用户信息和session里面的用户名是否匹配
if (isset($_GET['username']) && $_GET['username'] != $_SESSION['op']['username']) { header("location:op1_login.php"); }
垂直越权
普通用户pikachu只有查看的权限
管理员admin才有增删权限
看到删除的链接有id,切换回去普通用户然后尝试修改id看看是否能删除,发现不行,看来漏洞不是出现在这
然后看添加用户的页面
切回去普通用户,然后打开这个网页,发现能进去,随便添加一个用户,然后提交
直接弹回去登陆界面了,然后登陆普通用户,发现添加成功了