1、原理概述
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。
2、如何挖掘越权漏洞
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
3、越权可能发生的地方
所有用户信息查询,修改,等页面.如网上银行的余额信息,普通网站的个人资料查询修改等页面.只要涉及到要从数据库中查询或提交数据的地方,都有可能存在越权漏洞的产生.
A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。
即:不同账号之间是同一权限,但抓包该用户能够直接换号访问
A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。
即:不同账号名之间是不同权限,但抓包该用户名能够直接执行不同权限的命令
水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权访问。
垂直越权:由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。
1. 通过隐藏 URL
实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用 URL 实现访问控制,但 URL 泄露或被恶意攻击者猜到后,这会导致越权攻击。
2. 直接对象引用
这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权。
3. 多阶段功能
多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码。
4. 静态文件
很多网站的下载功能,一些被下载的静态文件,例如 pdf、word、xls 等,可能只有付费用户或会员可下载,但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载。
5. 平台配置错误
一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。
二.漏洞实战
1.准备两个账户,这里假设一个为用户a,性别为男,生日2020年;另一个用户为b,性别为女,生日为2010年,如图
2.通过点击修改资料并抓取数据包,分析两个包的不同点,发现只有cookie是不同的。下图为两个用户的数据包
3.通过分析发现,第一个传参是一样的,第二个可能为时间戳,猜测可能是uid和unique决定的用户身份,但是我将a用户的uid和unique替换给b并没有发现改变,说明猜测可能不对,继续尝试,发现当我将b用户的_member替换为a的时候,用户改变了,说明决定用户身份的因素在_member这里
4.通过解码_member的值,发现两者存在细微的差别
5.对每个存在差异的地方进行尝试,发现最终决定用户身份的是以下的5个字符
6.可以尝试爆破,但是数据会很多,量会很大,所以我取巧了,我又注册了一个账户并抓取同样的包,发现大概是这个规律,30开头的为 30NM加一个字符,40开头的为 40MM加一个字符,对其一位进行爆破
转载:https://bbs.zkaq.cn/t/30749.html
作者:学kali的小白
欢迎大家去关注作者
欢迎师傅加入安全交流群(qq群:611901335),或者后台回复加群
如果想和我一起讨论,欢迎加入我的知识星球!!!
扫描下图加入freebuf知识大陆
师傅们点赞、转发、在看就是最大的支持
后台回复知识星球或者知识大陆也可获取加入链接(两个加其一即可)