网站地图    收藏   

主页 > 后端 > 网站安全 >

浅谈web应用中权限问题 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 以前知道关于web权限可能存在问题,但是在现实测试中碰到的比较少,今天碰到了就记录下来:(大侠请过不要浪费你的宝贵时间)一、纵向提权一般网站都有很多用户,分为不同的权...

 

以前知道关于web权限可能存在问题,但是在现实测试中碰到的比较少,今天碰到了就记录下来:(大侠请过不要浪费你的宝贵时间)

一、纵向提权

 

一般网站都有很多用户,分为不同的权限,比较常见的是普通用户和系统管理员账户,纵向提权就是从普通用户提升自身权限为系统管理员。

 

 

 

使用burp suite过滤提交的数据包,获得如下数据

 

 

user%5Baccount%5D=reporter&user%5Bname%5D=Reporter&user%5Bpassword%5D=admin123&user%5Bpassword.confirm%5D=admin123&user%5Bmail%5D=reporter@example.com&user%5Broles%5D=REPORT+ADMINISTRATORS&user%5BallowLoginIp%5D=*.*.*.*&user%5BallowScanIp%5D=*.*.*.*&user%5BmaxTask%5D=500

 

此数据包主要实现更新用户个人信息,其中可以看出account字段为账号名称,name字段为用户显示名,password为密码,最主要的应该是roles字段,可以看出是用户的角色。这是一个普通账号,因此修改该role字段内容,为TEMPLATE+ADMINISTRATORS(已经知道的管理员角色表示)提交数据,返回成功提示信息。此时注销该账号,重新登录,发现该普通账号已经变成了系统管理员,实现了纵向提权操作,根据结果可以猜测:

 

该功能主要实现修改用户信息功能,根据提交的信息,使用update sql语句更新用户的信息(update user set role=newrole where account=newaccount),可以更新用户的权限,但是这个权限是使用隐藏字段保存在客户端,提交时,可以修改,在更新操作之前没有对提交该操作的用户权限进行检查,判断其是否有修改这个用户的权限,导致所有用户都可以修改权限。

 

修复方法:主要是不能用隐藏字段来保存用户的权限,应该包含在session中,或者普通用户修改信息时,不包含权限字段,单独制作修改用户信息的页面,只有系统管理员才有权进行操作。

 

二、横向提权

 

所谓横向提权,就是获得与自己权限(角色)相同的账户的密码,拥有其权限。

 

同样上面的数据包 www.2cto.com

 

user%5Baccount%5D=reporter&user%5Bname%5D=Reporter&user%5Bpassword%5D=admin123&user%5Bpassword.confirm%5D=admin123&user%5Bmail%5D=reporter@example.com&user%5Broles%5D=REPORT+ADMINISTRATORS&user%5BallowLoginIp%5D=*.*.*.*&user%5BallowScanIp%5D=*.*.*.*&user%5BmaxTask%5D=500

 

 

 

将account字段修改为test(与reporter为同一级别权限的账户)这样reporter账户就可以修改test账户的基本信息,实现起来很简单。跟上面的纵向提权情况基本相似,只是修改的字段不同。

 

修复方法:感觉使用session来保存登录的账户名称,在更新用户操作时,提取session中账户名,作为update where 后面的唯一条件,可以实现只更新该账户的信息。

 

三、如果说权限问题,可能还有一种就是没有进行权限判断的时候,一个后台页面没有做是否登录判断,任何人只要知道url就可以访问,不知道别人有没有这个问题,我最开始写page的时候,就犯过这个低级错误…,这种也是最危险。还有可能就是页面没有对用户的角色进行判断,只是判断了用户是否登录,如果登录就能访问,这样如果是一个系统管理员功能页面,一个普通用户就可以直接url访问,问题还是很严重的。

 

 

 

总结:因此看对于权限问题,也许是非常重要的,各种方法其实有时就是为了获得一定的权限,如sql注入有时就是拿到后台用户名和密码登录后台找上传得shell;Cookie欺骗就是为了绕过验证进入后台;xss偷cookie就是为了能够实现管理员功能等等,如果直接权限有问题,可能省略很多步骤,对于渗透来说简直就是一步到位。希望向我一样的“web程序员”重视权限在web管理中的应用。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论