首页 > 其他分享 >代码审计——垂直越权详解

代码审计——垂直越权详解

时间:2023-06-25 18:04:57浏览次数:54  
标签:审计 漏洞 用户 垂直 访问 详解 权限 越权


01 漏洞描述

垂直越权,也称权限提升,是一种“基于URL的访问控制”设计缺陷引起的漏洞。

由于Web应用程序没有做权限控制或者仅在菜单上做了权限控制,导致的恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目的。

代码审计——垂直越权详解_访问控制


02 审计要点

垂直越权漏洞发生的根本原因是系统没有设置完善的权限控制机制,因此审计的重点在于功能点是否设置了权限控制机制。

03 漏洞特征

垂直越权是一种URL的访问控制设计缺陷引起的漏洞,由于未对URL设定严格的用户访问控制策略,导致普通用户也可以通过发送请求的方式访问本应仅高权限用户才可访问的页面。

Java

@RequestMapping(value = "delete")
public String delete(HttpServletRequest request, @RequestParam Long id)
			throws Exception {
		try {
			userManager.delete(id);
			request.setAttribute("msg", "删除用户成功");
		} catch (ServiceException e) {
			// logger.error(e.getMessage(), e);
			request.setAttribute("msg", "删除用户失败");
		}
		return list(request);

上述代码是一段管理员删除用户操作的代码,若在操作时未对访问请求者的权限做判断,那么入侵者就可以构造请求“http://xxx.xxx.xxx/user/delete?id=1”来做只有管理员才有权限干的事情。

04 漏洞案例

代码审计——垂直越权详解_权限控制_02

代码层面观察对功能的判断是否存在校验机制或安全框架,若未存在明显校验代码,则存在垂直越权风险。

以下为3例垂直越权的功能点示例:

案例1:

登录到超级管理员用户,执行添加用户的操作,并且对过程进行抓包

代码审计——垂直越权详解_添加用户_03

切换到普通的管理员用户,并没有添加用户的权限,将其cookie替换到先前抓取的添加用户请求的cookie

代码审计——垂直越权详解_添加用户_04

发现新建了一个相同的用户,此为垂直越权

代码审计——垂直越权详解_添加用户_05

案例2:

使用高权限用户访问,可以获取所有用户的信息的权限

代码审计——垂直越权详解_访问控制_06


切换到普通用户,并没有查询所有用户的权限,将其cookie替换到先前抓取的请求包

代码审计——垂直越权详解_添加用户_07

发现成功查询所有用户信息,此为垂直越权

代码审计——垂直越权详解_访问控制_08

案例3:

某站点后台仅使用js跳转来限制未授权的用户访问

代码审计——垂直越权详解_权限控制_09


去掉js可以成功访问后台,且可以进行操作

代码审计——垂直越权详解_添加用户_10


05 修复方案

建议进行关键业务的操作时,应校验用户的会话然后根据会话获取对应的字段进行业务操作,切记不可以不校验会话的情况下允许用户操作关键性业务功能。

标签:审计,漏洞,用户,垂直,访问,详解,权限,越权
From: https://blog.51cto.com/u_16170213/6547488

相关文章

  • 代码审计——任意文件下载详解
    01漏洞描述网站可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可以是源文件,敏感文件等等。02审计要点任意文件下载漏洞发生的根本原因是系统自带的查看或下载功能,用户可控制下载路径,且当服务器不做任何限制的时候,就可以完成对任意文......
  • 代码审计——目录遍历详解
    01漏洞描述目录遍历,即利用路径回溯符“../”跳出程序本身的限制目录实现下载任意文件。例如Web应用源码目录、Web应用配置文件、敏感的系统文(/etc/passwd、/etc/paswd)等。一个正常的Web功能请求为http://www.test.com/lownload.php?file=test.php。如果Web应用存在路径遍历漏洞,则......
  • 代码审计——未授权访问详解
    01漏洞描述未授权访问漏洞,是在入侵者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接便可进行访问,同时进行操作。简单来说,就是用户不经过身份认证即可访问敏感资源,可能造成敏感信息泄露,或者其他恶意操作。02审计......
  • 代码审计——SSRF详解
    01漏洞描述服务端请求伪造(SSRF)也成为跨站点端口入侵,是由于一些应用在向第三方主机请求资源时提供了URL并通过传递的URL来获取资源引起的,当这种功能没有对协议、网络可信便捷做好限制时,入侵者可利用这种缺陷来获取内网敏感数据、DOS内网服务器、读文件甚至于可获取内网服务器控制......
  • 代码审计——命令执行详解
    01漏洞描述命令注入是指因为系统使用了可以执行命令的危险函数,但是调用这些函数的参数可控,并没有做过滤或过滤不严格,使入侵者可以通过构造特殊命令字符串的方式将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施入侵,来非法获取数据或者网络资源。简单来说,就是......
  • 代码审计——XXE详解
    01漏洞描述XXE(XMLExternalEntityInjection)是一种针对XML终端实施的入侵,漏洞产生的根本原因就是在XML1.0标准中引入了“entity”这个概念,且“entity”可以在预定义的文档中进行调用,XXE漏洞的利用就是通过实体的标识符访问本地或者远程内容。黑客想要实施这种入侵,需要在XML的payl......
  • 代码审计——XSS详解
    01漏洞描述跨站脚本入侵(CrossSiteScript)是一种将恶意JavaScript代码插入到其他Web用户页面里执行以达到入侵目的的漏洞。入侵者利用应用程序的动态展示数据功能,在html页面里嵌入恶意代码。当用户浏览该页之时,这些嵌入在html中的恶意代码会被执行,用户浏览器被入侵者控制,从而达到......
  • 代码审计——硬编码口令/弱口令详解
    01漏洞描述根据网站所使用的第三方组件,寻找特定的弱口令或默认口令进行登录。或在代码层面寻找写死的账号口令,尝试进行登录。02审计要点对前端源代码以及系统后台代码进行全文关键字检索,如key、pass、pwd、password,查看是否存在明文显示的账号密码。03漏洞案例源码中某前端js......
  • 关于Java中ArrayList类的toArray方法详解
    先上源码:publicObject[]toArray(){returnArrays.copyOf(elementData,size);}可以看到ArrayList类的toArray()方法调用了Arrays.copyOf(elementData,size)(其中的elementData是ArrayList类中用来存储对象的数组,size是数组大小),接下来进入其内部:publicsta......
  • Crontab 命令详解
    一. Crontab介绍      crontab命令的功能是在一定的时间间隔调度一些命令的执行。1.1/etc/crontab文件      在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。      如:[root@dave~]#cat/etc/cro......