跳转至

未授权访问漏洞

API未授权访问

漏洞描述

接口未授权访问,顾名思义在不进行请求授权的情况下,能够直接对相应的业务逻辑功能进行访问、操作等。通常是由于认证页面存在缺陷或者无认证、安全配置不当等导致的。

常见应用场景

最常见的应用场景为后台某些API接口在不登录系统的情况,直接请求对应的URI即可访问、操作该接口。

攻击者最常见的攻击途径主要有如下:

  1. 通过目录扫描工具加载目录字典探测
  2. 通过模糊测试URI中的参数进行探测
  3. 通过前端静态文件,比如JS、webpack等查找

漏洞危害

  • 攻击者可在没有认证的情况下直接操作对应的API接口,可直接被非法增删改次数据。
  • 因为攻击是在未认证下进行的,所以后续无法通过定位用户进行异常排查。

修复建议

  1. 对于后台接口,确保所有API接口先经过登录控制器。
  2. 在验证用户身份权限前不进行任何数据的交互。

未授权访问漏洞总结

授权绕过漏洞

什么是过滤授权绕过

过滤授权漏洞指的是在权限管理系统设计中,每个角色都有它的可操作的权限,通常来说,系统会根据url结合登录账号进行判断是否有权访问该页面。由于不严谨的过滤设计缺陷会导致权限绕过行为。

漏洞原理

一般会检测用户是否登陆,再判断路径是否授权。未授权或未登陆会重定向到/login.html页面,提示用户登陆。如图所示:

img

我们将要做的是,在有限的权限管理页面中绕过中间件过滤,从而实现访问未授权页面:

img

漏洞影响

该漏洞如标题所表明一致,不难理解。出现这个漏洞将会导致越权行为。造成严重的影响。例如,只有老板能发工资。越权的漏洞,打工人可以帮老板随便发工资。

漏洞识别

该漏洞常见有以下几种(当然还有其他的,目前说常见的,其他特征本质上也是一样的):

  • 未授权301重定向到指定白名单路径-[黑盒]
  • 权限管理系统-[黑盒]
  • 模糊包含匹配判断路径-[审计]

利用前提

  • 发现未授权页面

成功特征

  • 成功访问未授权功能

Shiro授权绕过

什么是Shiro?

  • Apache Shiro是一个Java 的安全(权限)框架。
  • Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。
  • Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等.
  • 官网: shiro.apache.org/
  • 官方文档十分钟快速入门:shiro.apache.org/10-minute-t…
  • 下载地址:github.com/apache/shir…

在这里插入图片描述

Shiro的三大功能

Shiro有三大核心组件,即Subject、SecurityManager 和 Realm

  • Subject: 为认证主体。应用代码直接交互的对象是Subject,Subject代表了当前的用户。包含Principals和Credentials两个信息。
  • SecurityManager:为安全管理员。是Shiro架构的核心。与Subject的所有交互都会委托给SecurityManager, Subject相当于是一个门面,而SecurityManager才是真正的执行者。它负责与Shiro 的其他组件进行交互。
  • Realm:是一个域。充当了Shiro与应用安全数据间的“桥梁”。Shiro从Realm中获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm中获取相应的用户进行比较,来确定用户的身份是否合法;也需要从Realm得到用户相应的角色、权限,进行验证用户的操作是否能过进行,可以把Realm看成DataSource,即安全数据源。

在这里插入图片描述

  • Authentication: 身份认证、登录,验证用户是不是拥有相应的身份;
  • Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限,即判断用户能否进行什么操作,如:验证某个用户是否拥有某个角色,或者细粒度的验证某个用户对某个资源是否具有某个权限!
  • Session Manager: 会话管理,即用户登录后就是第-次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通的JavaSE环境,也可以是Web环境;
  • Cryptography: 加密,保护数据的安全性,如密码加密存储到数据库中,而不是明文存储;
  • Web Support: Web支持,可以非常容易的集成到Web环境;
  • Caching: 缓存,比如用户登录后,其用户信息,拥有的角色、权限不必每次去查,这样可以提高效率
  • Concurrency: Shiro支持多线程应用的并发验证,即,如在一个线程中开启另一个线程,能把权限自动的传播过去
  • Testing:提供测试支持;
  • RunAs:允许一个用户假装为另-一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一-次登录后, 下次再来的话不用登录了

Java开发 Shiro框架详解(轻松入门)

CVE-2022-32532

利用条件:

Apache Shiro 中使用 RegexRequestMatcher 进行权限配置,且正则表达式中携带“.”时

Text Only
payload:/permit/%0aany

CVE-2022-32532 认证绕过漏洞分析

CVE-2020-1957

Shiro权限绕过漏洞分析(CVE-2020-1957)

Shiro权限绕过漏洞详细分析

payload总结

  • **CVE-2016-6802**在访问路径前加上/任意目录名/../,即可绕过访问
  • CVE-2020-1957/demo/..;/admin/index其中demo为授权路径,admin/index为鉴权路径 /.;/hello/aaaa
  • CVE-2020-11989admin/page%252fABCDEFG其中admin/page为鉴权路径,ABCDEFG为随意字符串 /hello/a%25%32%66a /;/test/hello/aaa
  • CVE-2020-13933admin/%3BABCDEFG,其中admin为鉴权路径,ABCDEFG为随意字符串
  • CVE-2020-17510admin/%2e
  • CVE-2020-17523admin/%20,其中admin为鉴权路径
  • **CVE-2022-32532**特定条件下的漏洞利用:当shiro使用了RegExPatternMatcher进行路由匹配时,由于Java的正则Pattern.matches解析.默认是不匹配r或者n的,因此当path中带有%0a时可绕过正则匹配 /permit/a%0any

思路总结

难点和关键点:如何找到需要鉴权的路径名或者接口

  1. 利用fofa搜寻同样类型站点,利用弱口令进入同类型的站点后台,收集一波后台各种接口的URL,将这些URL拼接在目标站点。
  2. 在JS里找授权路径,利用bp插件寻找敏感接口。
  3. 使用swagger,actuator等路径尝试。
  4. 常见框架目录爆破。

shiro权限绕过总结