1. 越权漏洞简介

 

在笔者⼼中,逻辑漏洞中最为神秘且强⼤的漏洞,便是越权访问漏洞——⼀个强⼤到若存在,则⼀个普通⽤户也可以控制整个⽹站⽤户数据的漏洞。

 

越权漏洞的形成,主要是因为开发⼈员在对数据进⾏增、删、改、查询时,对客户端请求的数据过分相信⽽遗漏了权限的判定所以,测试越权就是和开发⼈员拼细⼼的过程。

 

2. 越权漏洞的危害

 

想看,⼀个普通的⽤户,例如⼀名⿊帽⼦(⿊客)去注册⼀个⽹站最为普通权限的⽤户,该名⿊客发现⽹站存在越权访问漏洞,此时通过纵向越权控制⽹站数据的修改查看,操控各种⽤户⽹站信息;通过横向越权访问⽤户隐私信息,修改或者以某个⽤户身份去欺骗其他⽤户。⽆论纵向还是横向越权,当⿊客挖掘到此漏洞后,就可以有更多⽅法来进⾏漏洞最⼤化利⽤了

 

3. 越权漏洞的分类

 

越权漏洞按照「权限」的区别,可以分为两⼤类型,即纵向越权(垂直越权)和横向越权(平⾏越权)。简单理解:纵向越权即以低权限可以访问⾼权限,横向越权以相同权限可以互相进⾏访问。

 

纵向越权,以低权限访问⾼权限。⽐较通俗的理解,低权限可以认做是⼀名普通⽤户去访问⼀名带有权限的⻚⾯或操作。例如,⼀个店铺的⽹站,⼀般由店⻓或管理员对⽹站进⾏管理和修改,⽽当需要店⻓权限的⻚⾯URL被获取了以后,普通店员若能够访问该⻚⾯,并成功进⾏⼀系列的操作,则可以判断为纵向越权了,例如普通店员修改了只有店⻓才可以进⾏的货品上架、价格修改、财务结算等操作。

 

横向越权,以相同权限可相互访问。⽐较通俗的理解,例如QQ空间,同普通级别下,若⼀名普通⽤户A可以访问另外⼀名普通⽤户B的「隐藏空间」⻚⾯,甚⾄可以访问「动态发布」⻚⾯,则⽤户A可以以B的身份,发布⼀些不可描述的或者虚假的诈骗信息,则可以判断为横向越权了

 

以上,就是这两个漏洞的不同及作⽤之处。

 

4. 越权产⽣原理

 

越权的产⽣,主要是开发者在开发⼯程中对于权限校验的判断较少,或者逻辑不够严谨,导致了该漏洞的产⽣。

 

⽐如在某个⽹站中,服务端、客户端在进⾏Cookie验证中,仅在已经登录账号时验证Cookie,之后的操作都没有分配其Cookie进⾏操作;或者⼲脆在某个功能模块不添加身份校验(Cookie)等。

 

因此,作为开发⼈员应该怎么做呢?

 

在与服务器进⾏数据交互时客户端携带着标识⽤户的身份的cookie,当服务端的session与cookie中的身份匹配成功后,才能允许该⽤户进⾏相关操作(cookie和session的关系-->⼀弹、⼆弹)。除了cookie之外,在请求中可能会带⼀些参数,细览下可能存在辨别信息的唯⼀值,来进⾏测试。这⾥要说⼀点,传输的参数并不⼀定在请求参数中,也有可能存在链接等位置。

 

5. 漏洞挖掘演练

 

越权漏洞⼀般归类为逻辑漏洞,因此我们在挖掘的过程中,很少能够通过⼯具来精确的挖掘出该漏洞,更需要的是研发⼈员或安全⼯程师⽤较为缜密的⼼思去⼿⼯挖掘。

 

横向越权挖掘思路

 

 

  • 第⼀步:先判断请求中是否有参数,若没有参数,且只⽤cookie进⾏身份验证,则不可横向越权;

  • 第⼆步:若请求中除了cookie,还存在其他参数,并且参数中的某些值可能是辨别信息的唯⼀值(如employeeID、departmentID、ID等),则可能存在横向越权。越权的原因可能是类似employeeID这样的参数,服务端没有进⾏判断是否是cookie对应的员⼯ID。

 

纵向越权挖掘思路

 

 

  • 第⼀步:先看看是否可以构造或找到管理员才能访问到的URL⻚⾯,这个⻚⾯⼀般普通⽤户⽆法访问,只有管理员才知道,可以通过代码审计或渗透经验来构造;

  • 第⼆步:找到URL⻚⾯之后,构造恶意HTTP请求发送服务端,只要服务器没有直接拒绝或者可绕过,当服务返回⻚⾯时,则达到了纵向越权的渗透。

 

总结,纵向越权主要是服务端,对于每⼀个请求的权限的认证不够严谨,缺少了对⽤户身份的判断。于⽤户的权限判断可能仅在菜单上进⾏权限的判断,导致恶意⽤户只要猜到了其他⻚⾯的URL,就可以访问或控制其他⻆⾊拥有的数据或⻚⾯,达到权限提升的⽬的。

 

6. 越权修复建议

 

6.1 横向越权漏洞

 

①⽔平权限参数不要⽤⾃增值,⽤id加密、随机数或GUID,但搜索引擎或攻击者可以同样⽤这个随机数和连接去进⾏操作。

 

②Web层检查发起请求的⽤户权限,⽐如从session信息中获取。

 

③数据库表增加ownerId字段,增删改查询时加上其作为where语句条件,即每⼀个信息增加⼀个发布⼈的字段,修改的⼈必须与发布的⼈为同⼀个⼈才可以访问。

 

6.2 纵向越权漏洞

 

①增加对url资源进⾏权限验证。

 

——END——

 

报班咨询:

班主任微信:

qiuzhiquanquan 或 qqls000,加入微信群

班主任QQ:

1724698994 或 1752856301,加入加入QQ群(240920680

 

加入学习:

拼客学院公号:

微信搜索pinginglab

拼客学院网校:

https://www.pinginglab.net

拼客学院APP:

https://www.pinginglab.net/mobile/

微信小程序:

https://www.pinginglab.net/page/weixin

 

技术交流群:

拼客学院技术交流群:240920680

拼客学院网络安全交流群:482618569

拼客学院Linux云计算交流群:156959645

拼客学院Python人工智能交流群:117907362