Apache Shiro 认证绕过漏洞 CVE-2020-1957 漏洞复现

一、漏洞描述

Apache Shiro 是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
CVE-2020-1957,Spring Boot中使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的URL,利用 Apache Shiro 和 Spring Boot 对URL的处理的差异化,可以绕过 Apache Shiro 对 Spring Boot 中的 Servlet 的权限控制,越权并实现未授权访问。

二、漏洞影响

Apache Shiro < 1.5.1

三、漏洞复现

1、环境搭建

执行如下命令启动一个搭载Spring 2.2.2与Shiro 1.5.1的应用:

cd vulhub/shiro/CVE-2020-1957
docker-compose up -d

环境启动后,访问http://x.x.x.x:8080即可查看首页:
在这里插入图片描述

这个应用中对URL权限的配置如下:

@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
    DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
    chainDefinition.addPathDefinition("/login.html", "authc"); // need to accept POSTs from the login form
    chainDefinition.addPathDefinition("/logout", "logout");
    chainDefinition.addPathDefinition("/admin/**", "authc");
    return chainDefinition;
}

2、漏洞复现

使用BurpSuite抓取数据包,访问/admin/目录:
在这里插入图片描述
回显302并跳转到登录页面:
在这里插入图片描述
构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面:
在这里插入图片描述
URL请求过程:

  • 客户端请求URL: /xxx/..;/admin/
  • Shrio 内部处理得到校验URL为 /xxxx/..,校验通过
  • SpringBoot 处理 /xxx/..;/admin/ , 最终请求 /admin/, 成功访问了后台请求。

四、漏洞POC

构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面。

五、参考链接

https://www.safedog.cn/news.html?id=4441
https://blog.spoock.com/2020/05/09/cve-2020-1957/

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
CVE-2020-9484是Apache Tomcat容器中的一种身份验证绕过漏洞。要复现漏洞,我们需要满足以下条件: 1. 安装Apache Tomcat服务器:首先需要在本地或远程环境中安装Apache Tomcat服务器。确保Tomcat版本为9.0.0.M1至9.0.0.30。 2. 配置Tomcat服务器:在Tomcat的配置文件中(通常是server.xml),需要启用HTTP Connector属性中的restEnabled参数。该参数默认为false,我们需要将其设置为true。 3. 修改用户配置文件:在Tomcat配置文件的users节点中,添加一个或多个用户。为了复现漏洞,我们需要至少添加一个用户名为test的用户及其密码。 4. 启动Tomcat服务器:启动Tomcat服务器,确保它在本地或远程环境中运行。 5. 发起请求攻击:使用任何Web请求工具(如curl、Postman等),构造以下HTTP请求: POST /servlets-examples/servlet/RequestParamExample HTTP/1.1 Host: [Tomcat服务器IP地址]:[Tomcat服务器端口号] Content-Length: [content-length] Transfer-Encoding: [transfer-encoding] attName=%25%7B%25+%27test%27%2e%25+%27class%27%7d 其中,[Tomcat服务器IP地址]替换为Tomcat服务器的实际IP地址,[Tomcat服务器端口号]替换为Tomcat服务器的实际端口号,[content-length]和[transfer-encoding]分别为请求体的长度和编码方式。 6. 漏洞验证:如果成功复现漏洞,我们将获得类似以下的服务器响应: HTTP/1.1 200 OK [其他响应头信息] Content-Type: text/html;charset=UTF-8 [其他响应体信息] ${%27test%27.class} 如果响应体中包含"${'test'.class}"的引用,则漏洞已成功复现。这说明攻击者绕过了身份验证,并成功执行了恶意代码。 需要注意的是,CVE-2020-9484漏洞可能会导致未经授权的远程代码执行,攻击者可以利用此漏洞来执行任意代码,可能导致服务器受到严重影响。在验证漏洞后,建议尽快升级Tomcat服务器,安装相应的补丁或增加其他安全措施,以避免潜在的安全威胁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值