type
Post
status
Published
date
Dec 14, 2022
slug
summary
tags
漏洞
业务安全
category
漏洞分析
icon
password
Property
Feb 9, 2023 07:25 AM
漏洞描述
在 Apache ShenYu Admin 中发现了一个缺陷。ShenyuAdminBootstrap 中 JWT 的错误使用允许攻击者绕过身份验证。
影响版本
Apache ShenYu 2.3.0 | 2.4.0
漏洞复现
本次漏洞环境搭建采用官方的docker镜像
> docker pull apache/shenyu-admin:2.4.0 > docker run -d -p 9095:9095 apache/shenyu-admin:2.4.0
利用脚本如下:
第三方库要求是PyJWT的jwt,这里对脚本进行了修改,32行的
token = jwt.encode(payload=payload, key=salt,algorithm='HS256', headers=headers).decode('utf-8') #改为 token = jwt.encode(payload=payload, key=salt, algorithm='HS256', headers=headers)
利用效果如图:

得到admin的密码,尝试登陆

漏洞成因
下载2.4.0源码以以下方式进行搭建:https://blog.csdn.net/weixin_45847167/article/details/118485959开始分析,漏洞描述里提到是admin的权限校验被绕过所以先去看 shenyu-admin 的模块部分代码

查看 pom.xml 中发现使用了 shiro ,所以先去看一下 shiro 部分实现的逻辑代码来到
org.apache.shenyu.admin.shiro.config,这里创建了 Filter 并添加到 FilterMap 里面,并且设置的路径是,这里创建 Filter 是为了让 jwt 来进行权限的管理
跟进查看
StatelessAuthFilter ,获取请求包中的 X-Access-Token 头里面的token 数据
会将获取到的 token 调用 subject.login

接下来就会来到
org.apache.shenyu.admin.shiro.config#doGetAuthenticationInfo,可以看到压根没有对 jwt 的 key 进行校验
而在 2.4.1 版本中进行了修复 增加了对 key 的校验

并且修复了默认key的情况

- Author:w1nk1
- URL:https://notion-w1nk1.vercel.app//article/621d30c7-67da-462f-801a-2e7d8b39b922
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts