灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2382回复:0

浅谈web应用中权限问题

楼主#
更多 发布于:2011-12-29 21:39
以前知道关于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.atcpu.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管理中的应用。

喜欢0 评分0
游客

返回顶部