越权漏洞【逻辑篇】

简介

越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,在2021被OWASP列为Web应用十大安全隐患的第一名。
由于越权访问漏洞属于逻辑类漏洞,所以目前上WAF无法进行完全的防御,也无法被全自动化的漏洞扫描器发现

漏洞类型

越权访问漏洞主要分为水平越权与垂直越权

水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权

垂直越权:由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的

漏洞出现原因

1.没有对数据进行完善的验证或者细分
2.有验证,逻辑顺序搞错,先执行后验证
3.有验证,验证产生在用户凭据上,如cookie、session、token、jwt

常见手段

  • 通过修改GET传参来越权。GET案例
  • 修改POST传参进行越权。 POST案例
  • 修改cookie传参进行越权。cookie案例
  • 抓取其他用户传参(验证身份的id等等)可以在浏览器、APP、应用程序访问其数据 抓参案例
  • 未授权访问,没有严格设置权限,导致敏感信息可以直接访问。在日常测试中常常会遇见。只要输入正确的网址就可以直接访问,例如/admin默认是登录,登录后跳转到user.php,然后你直接访问user.php,发现你直接有后台权限。未授权案例
  • 业务逻辑绕过 逻辑绕过案例

演示案例

YXcms-水平越权漏洞

原理

只检测用户和ID对应关系,没检测当前操作用户是不是当前用户

演示

(1)首先,我们注册了两个用户,他们的信息如下

(2)当我们修改用户bcxc2资料时,进行抓包

(3)这里,我们可以发现post传输的参数中,含有id=2,猜测id=2是指向账户bcxc的id,将内容里的bcxc2改为bcxc1、id=2改为id=1

(4)提示修改成功,数据库bcxc1里的手机号和qq号也被修改了

MINIcms-垂直越权(CVE-2018-18891)

原理

判断是否拥有权限在于head.php,在post.php和page.php中有这样一个问题

先等前面功能点代码执行完了

再进行权限判断

所以就导致了先执行后判断权限的垂直越权漏洞

演示

(1)现有一篇文章test123

(2)通过代码审计得知poc

poc:

http://127.0.0.1/cms/mc/mc-admin/post.php?delete=aesuas&state=publish&date=&tag=
(3)直接在其他没登录的浏览器执行该poc

(4)文章就被放到回收站了

XHcms-未授权访问

原理

通过代码审计得知,只要cookie认证是user==不为空即可

演示

(1)找到后台登录入口

(2)抓包,添加cookie

(3)成功进入后台

黑盒测试流程

(1)先通过工具把所以域名爆破出来,看看有没有含义敏感数据的页面

(2)在功能点测试中,修改所有和权限挂钩的参数,尝试判断存不存在越权漏洞

利用工具

Authz和AuthzMatrix 逻辑越权工具

posted @ 2023-01-26 16:00  bcxc9405  阅读(720)  评论(0编辑  收藏  举报
/*
*/