解决方案-src越权漏洞挖掘总结-0基础网安自学路线
高校信息系统常见漏洞-越权访问一、越权访问漏洞概述
越权访问( ,简称BAC),是Web应用程序中一种常见的漏洞,被OWASP列为Web应用十大安全隐患的第二名。一般表现为用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。这种非授权的访问,也被定义为业务逻辑类漏洞,其特点是存在范围广、危害大,自动化工具又难以检测,因此近些年一直高居web安全漏洞的前十名。
越权访问,一般分为水平越权和垂直越权两种形式。
水平越权访问:一般定义为“基于数据的访问控制”设计缺陷引起的漏洞,表现为同一角色的不同用户,拥有相同权限等级,他们能访问自己的私有数据,但是应用系统并没有对数据和访问者的身份进行细分和校验,导致用户相互之间可以访问对方的数据。
垂直越权访问:一般定义为“基于URL的访问控制”设计缺陷引起的漏洞,表现为低权限和高权限的用户间,原本高权限用户能够访问的URL或者执行特定的动作,由于系统没有对访问者的身份进行校验,导致低权限的用户只要能够知晓高权限用户访问的URL就可以访问或者可以执行高权限的动作。
二、案例分析
在高校(涉及的用户角色常见有学生、教师、管理员等)的信息系统中,存在大量的数据查询访问行为,例如在教务系统中,学生可以查询自己的考生信息、考试成绩等等,这些访问权限的设计不当,往往就会导致出现越权访问的漏洞。下面笔者通过几个越权访问的案例,为大家讲解该类漏洞的原理及挖掘思路。
案例一:学生账户间水平越权访问他人信息
该案例是某高校的一个与考生相关的信息系统,在这个信息系统中,学生账户登录后,就可以查询和下载自己的考生信息表,如下图所示。
漏洞发现过程:
在打开个人考生信息表的URL后,笔者看到一个Ex***ID=1445的查询参数,而这个参数能够使我们很容易地猜想到他代表的应该是考生ID,所以笔者在这里就尝试了变换考生ID信息为Ex***ID=1447,而此时我们发现网页打开了考生ID为1447的考生信息,如下图所示。
漏洞分析:
这个案例中,我们很明显地可以分析出,考生信息属于每个考生的私有数据,这个数据在正常情况下,只有对应的考生才可以查询和下载,而这里很明显的是,系统并没有将数据和用户的访问身份进行关联和校验,通过该漏洞,任意考生只要遍历考生ID信息,就会导致所有考生信息的泄露。这个案例就属于非常典型的水平权限跨越访问漏洞,类似的漏洞还经常存在于同级别权限间的教职工间。
案例二:学生账户可越权进行信息发布
“信息发布”是在高校的大多数信息系统中都存在的功能。信息发布可以是新闻,也可以是重要通知,发布的信息往往会显示在网站的首页,因此发布信息往往是管理员才拥有的高权限动作。在这个案例中,管理员登录系统后,可以访问到信息发布页面。管理员进行发布管理的URL为,如下图所示。
通过该URL,管理员可点击“新增”,跳转至新增页面的URL,而该URL地址为:。
漏洞发现过程:
对于该URL,原本属于管理员特权才可以访问的URL,且对于低权限账号也采取了隐藏措施,低权限账号是无法看到该URL的。但是对于有经验的攻击者来说,该URL的命名/news/,显然并不难猜,或者通过爬虫等手段均可以轻松访问到该URL。
我们以低权限的学生用户登录,发现可以直接访问该URL,并进一步可以进行新增等操作,如下图所示。
漏洞分析:
在这个案例中,我们看到,该系统的开发者采取了隐藏措施对特权URL进行保护,也就是在学生账户登录时,根本看不到该URL,但是并未对访问该URL的用户进行身份和权限的校验。这就导致学生账户如果知道该URL,也就可以直接访问并进一步进行信息的发布等高权限动作。由此我们也能看出,垂直权限的越权访问,往往带来的是权限提升,导致的问题也不仅仅是信息泄露,甚至还可以进一步导致数据的修改删除等。
案例三:低权限账户可以切换高权限身份
有一些系统中,开发者往往会定义出不同的角色类型,然后系统根据角色的不同而赋予不同的权限。在这个案例中,系统就通过定义了角色的类型,并通过定义的数值代表不同角色的类型。
漏洞发现过程:
笔者在该系统的渗透测试过程中,通过burp进行了http协议数据的拦截和分析,发现在教师用户登录认证成功后,服务器向客户端发送的http响应包中包含一个:[“1”]的字段。而接下来页面首先会重定向到选择学生入学年级,而此时页面中显示当前用户的角色为指导教师,重定向的页面如下图所示。
~
网络安全学习,我们一起交流
~