逻辑漏洞挖掘之越权漏洞(IDOR)分析总结
越权漏洞
越权漏洞是Web应用程序中一种常见的安全漏洞。它的威胁在于一个账户即可控制全站用户数据。当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是开发人员在对数据进行增、删、改、查时对客户端请求的数据过于信任而遗漏了权限的判定。文中如有错误的地方,还望各位大佬在评论区指正。
越权漏洞的类型
- 水平越权:权限不变,身份改变
- 垂直越权:权限改变,身份不变
- 交叉越权:权限改变,身份改变
简单来说:任何越权都是我干了不属于自己权限范围的事。
越权姿势
如何挖掘越权漏洞
最简单的方法:通过特定参数的更改来发现越权漏洞。
困惑:看起来就是改个ID发个包,为什么自己挖不到呢?
解决办法:关注功能点(收货地址、用户、编辑、订单……)
常见越权漏洞
Get传参越权
案例1
打开某网站进行购物预览等操作
1 | GET booking/pay.htm?oid=760004 |
通过遍历oid
来实现越权查看其他订单信息
案例2
1 | POST /schoolweb_pos/posweixin.do?action=CheckUsrno&usrno=shenmq HTTP/1.1 |
通过修改usrno
对应的用户名即可查看人员信息
POST传参越权
登录网站在修改文章,预览文章、简历处抓包修改
通过id
来实现越权删除、修改等操作。
Cookie越权
登陆官网 -> 用户中心-> 地址管理 -> 常用地址
拦截常用地址查询请求 将该位置手机号码修改为其它任意再发起请求
获取到的地址列表
注:尝试修改请求数据中Id
字段失败后,可以试试修改Cookie
中参数。
越权绕过技巧
删除多余参数
登录官网 —> 个人中心 —> 收货地址 —> 添加收货地址,尝试修改id越权
越权失败,尝试删除
token
等多余参数,发现只保留id
与token
即可实现越权
密码越权修改
方法1:输入正确的旧密码和要更改新密码,抓包将loginId改为其他账号,这里账号为admin
,新密码为123123
方法2:在修改密码时,抓包将带有旧密码字段数据全部删除,尝试修改。如成功可以测试修改其他用户,来实现扩大危害。(由于我才接触未找见实际案例!没有图)
修改URL路径越权
登录网站来的个人中心发现url地址出现app=user
尝试修改
将app=user
修改为admin发现成功登录到管理用户
提升常见权限控制参数:rank、level、type
常见管理员:admin、sup_admin、super
未授权访问
未授权访问也可大致分为三种,第一种是直接通过修改响应码的状态,第二种通过直接链接访问从而绕过登录限制,第三种人为疏忽的导致的问题。
1.1 修改响应码登录
不同系统采用的响应码各不相同,一般都是通过抓包查看JS文件,来判断如何修改。也可以采用简单粗暴的方式,例如直接登录查看正确的响应码或者是直接猜!
常见响应码:200、000000、true、0、success、ok、1等等(排名不分先后,全凭个人经验)
总结
在日常的测试中需要关注任何场景每一个可能决定用户权限的参数值,注意GET、POST的传参,把握传参,就能把握住越权的命脉。多关注功能点,会有意想不到的收获。
越权漏洞防御
- 对于涉及用户唯一信息的请求,每次都要验证和检查所有权;
- 敏感信息页面加随机数的参数,防止浏览器缓存内容;
- 不使用暴露给用户的参数来做权限与身份得区分标识;
- 将权限与功能对应,使用最小权限原则,普通用户授予能正常使用基本功能的最小权限。