浅谈越权访问漏洞风险
01 越权漏洞
越权漏洞是Web应用程序中常见的安全漏洞。该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查(比如说修改数据包的值或者直接访问其他用户相应页面的链接),访问或者操作其他用户或者更高权限用户才能访问到的页面或数据。
越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
02 越权分类
水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。
垂直越权:指低级别攻击者尝试访问高级别用户的资源。
03 越权出现的位置
水平越权
1、直接对象引用
这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面URL后加上自己的id便可查看,当修改为他人的ID号时,会返回他人的信息,便产生了水平越权
2、多阶段功能
多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不在验证用户身份,导入而已攻击者抓包直接修改参数值,导致可修改任意用户的密码
3、静态文件
很多网站的下载功能,一些被下载的静态文件,例如pdf、word、xls等,可能只有付费用户或者会员才可以下载,但当这些文件url地址泄露后,便会导致任何人可以下载,如果指导URL命名规则,则会便利服务器的收费文档进行批量下载。
垂直越权
1、通过隐藏URL实现控制访问
有些程序的管理页面只有管理员才显示,普通用户看不到,利用URL实现访问控制,但URL泄露或被而已攻击者猜到后,会导致越权攻击。
2、多阶段功能
多阶段功能是一个功能有多个阶段的实现,例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不在验证用户身份,导致恶意攻击者通过抓包直接修改参数值,导致可修改任意用户密码。
3、平台配置错误
一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或者配置控件错误时,就会出现越权访问。
04 测试越权漏洞
水平越权
先注册普通账号test1、test2,修改参数,抓包
拦截Test1界面数据,test1的userid为13
拦截Test2界面数据,test2的userid为15
在test2数据包下修改userid值为test1的userid=13
结果发现:test2成功攻击,并将test1的信息修改为test2的内容
垂直越权
修改admin、shenfen为1
Cookie:ASPSESSIONIDSSTDRRRQ=KEBNJFHCOAODAHDGPIPIBLGE; BWSsoft%5F2010=phone=12345678901&admin=1&realname=test1&dlcs=1&username=test1&bumen=test1&loginname=test1&danwei=test1&shenfen=1&UserID=11
Forward后test1身份变成管理员
获得管理员权限可以进行“添加用户”操作
抓取数据包 继续修改Cookie中的admin、shenfen为1
放包,页面显示用户添加成功
查看用户管理可见成功添加test11账号
05 越权访问漏洞防范
1、不相信来自用户的输入,对于可控参数进行严格的检查与过滤;
2、执行关键操作前必须验证用户身份;
3、直接对象引用的加密资源id,防止攻击者枚举id;
4、前后端同时校验;
5、调用功能前验证用户是否有权限调用相关功能。