freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

shiro-CVE-2022-32532漏洞复现
woshidatianguan 2023-07-25 15:44:07 191918
所属地 北京

1.简介

1.1 Apache Shiro

Apache Shiro 是一个强大且易于使用的 Java 安全框架,用于保护应用程序的安全性。它提供了认证、授权、加密、会话管理等一系列安全功能,可以简化应用程序中的身份验证和授权操作。

下面是 Apache Shiro 的一些主要功能:

  1. 认证(Authentication):验证用户的身份以确定其是否是合法用户。

  2. 授权(Authorization):定义用户被允许执行的操作和访问的资源。

  3. 会话管理(Session Management):管理用户会话,包括会话的创建、维护和失效等。

  4. 密码加密(Password Encryption):提供安全的密码存储和验证机制,并支持多种密码加密算法。

  5. 单点登录(Single Sign-On):允许用户使用一组凭据(如用户名和密码)登录并在多个应用程序之间共享身份验证信息。

使用 Apache Shiro,您可以轻松地将安全功能集成到您的 Java 应用程序中,无需过多关注底层实现细节。它还提供了灵活的配置选项和可插拔的安全组件,使得适应不同的安全需求变得更加容易

1.2 漏洞描述

2022年6月29日,Apache官方披露Apache Shiro权限绕过漏洞(CVE-2022-32532),当Apache Shiro中使用RegexRequestMatcher进行权限配置,且正则表达式中携带"."时,未经授权的远程攻击者可通过构造恶意数据包绕过身份认证,导致配置的权限验证失效。

漏洞详细情况
编号CVE-2022-32532
影响版本Apache Shiro < 1.9.1
漏洞检测在config\pom.xml的version标签中查看当前使用的shiro版本号。

2.漏洞复现

2.1 搭建环境

系统工具备注
kali(2023)docker,vulfocus(在线靶场),burpsuit

环境搭建:

(104条消息) vulfocus 靶机环境搭建部署vulfocus部署csd_ct的博客-CSDN博客

(104条消息) vulfocus不能同步的解决方法/vulfocus同步失败_key_info的博客-CSDN博客

2.2 启动环境

1690270189_64bf79ed98e078a4d86ca.jpg!small?1690270188708

1690270196_64bf79f4dba6ed510be7e.png!small?1690270196383

2.3 验证漏洞

抓包分析(404)

1690270205_64bf79fd051ef2bf82823.png!small?1690270204000

get方式/permit/any不加token

GET /permit/any HTTP/1.1

1690270214_64bf7a060e248cb4debf3.png!small?1690270213187

get方式/permit/any加token

GET /permit/any HTTP/1.1
token:4ra1n

1690270220_64bf7a0ca43998c0decdb.png!small?1690270221178

使用 %0a 进行权限绕过

GET /permit/a%0any HTTP/1.1

1690270234_64bf7a1a7d2d87042b39d.png!small?1690270234345

3.总结

3.1漏洞原理:

(1)在4ra1n师傅构造的漏洞场景中,自定义了Filter,增加权限认证场景:

1690270298_64bf7a5a1ac9e45d312fb.jpg!small?1690270296963

判断请求头中的Token是否匹配。

如果不存在Token或者Token头错误则认为认证失败。

(2)java中的正则

在正则表达式中元字符.是匹配除换行符(\n、\r)之外的任何单个字符。
要匹配包括 \n 在内的任何字符,需使用像(.|\n)的模式。
在java中的正则默认情况下.也同样不会包含\n、\r字符,因此在一些场景中,使用正则.的规则就有可能被绕过。
新增Pattern.DOTALL模式后,正则表达式.就可以匹配任何字符包括换行符。
在shiro-core-1.9.0.jar中存在一个RegExPatternMatcher类,提供请求路径匹配功能及拦截器参数解析的功能。pattern存在带.的正则表达式匹配,若source中存在\r或\n字符时,将判断错误。

配置了自定义的AccessControlFilter实现类,并将 PatternMatcher配置为RegExPatternMatcher。

同时自定义MyShiroFilterFactoryBean。

1690270363_64bf7a9b0fe67ffb85cd3.jpg!small?1690270362007

继承自ShiroFilterFactoryBean类;设置匹配规则为/permit/.*字符串,表示需要拦截/permit/下所有的路径。

所以,当访问/permit/any,返回拒绝访问。

1690270372_64bf7aa4a9609d1919e26.png!small?1690270372468

3.2修复建议

目前Apache官方已发布此漏洞修复版本,建议用户尽快升级至Apache Shiro 1.9.1及以上版本。

3.3参考文章

https://zhuanlan.zhihu.com/p/538397930

https://blog.csdn.net/qq_51577576/article/details/126155240

# 渗透测试 # 网络安全 # web安全 # 系统安全 # 数据安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 woshidatianguan 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
woshidatianguan LV.5
这家伙太懒了,还未填写个人描述!
  • 34 文章数
  • 18 关注者
代码审计 | RuoYi4.6.2Thymeleaf模板注入详解
2024-12-13
代码审计ruoyi_v4.6.2 | SQL注入详解
2024-12-04
代码审计ruoyi_v4.6.1 | SQL注入详解
2024-11-29
文章目录