type
Post
status
Published
date
Dec 12, 2022
slug
summary
tags
漏洞
业务安全
category
漏洞分析
icon
password
Property
Feb 9, 2023 07:23 AM
漏洞描述
Apache Apisix是美国阿帕奇(Apache)基金会的一个云原生的微服务API网关服务。该软件基于 OpenResty 和 etcd 来实现,具备动态路由和插件热加载,适合微服务体系下的 API 管理。
Apache APISIX Dashboard 存在授权问题漏洞,该漏洞源于 Manager API使用了两个框架,在 gin 框架的基础上引入了 droplet 框架,所有的 API 和鉴权中间件都是基于 droplet 框架开发的,但是有些API直接使用了 框架 gin 的接口从而绕过身份验证。
影响版本
APISIX Dashboard < 2.10.1
环境搭建
漏洞环境可利用apisix-docker进行demo的一键搭建,https://github.com/apache/apisix-docker

修改为2.7后 docker-compose up -d
漏洞复现与分析

以
/apisix
开头的URL,除了/apisix/admin/tool/version
和/apisix/admin/user/login
以外均需要认证,通过判断HTTP Header中的Authorization
来完成鉴权处理打开路由表,注册了如下路由:
func SetUpRouter() *gin.Engine { if conf.ENV == conf.EnvLOCAL || conf.ENV == conf.EnvDEV { gin.SetMode(gin.DebugMode) } else { gin.SetMode(gin.ReleaseMode) } r := gin.New() logger := log.GetLogger(log.AccessLog) r.Use(filter.CORS(), filter.RequestId(), filter.IPFilter(), filter.RequestLogHandler(logger), filter.SchemaCheck(), filter.RecoverHandler()) r.Use(gzip.Gzip(gzip.DefaultCompression)) r.Use(static.Serve("/", static.LocalFile(filepath.Join(conf.WorkDir, conf.WebDir), false))) r.NoRoute(func(c *gin.Context) { c.File(fmt.Sprintf("%s/index.html", filepath.Join(conf.WorkDir, conf.WebDir))) }) factories := []handler.RegisterFactory{ route.NewHandler, ssl.NewHandler, consumer.NewHandler, upstream.NewHandler, service.NewHandler, schema.NewHandler, schema.NewSchemaHandler, healthz.NewHandler, authentication.NewHandler, global_rule.NewHandler, server_info.NewHandler, label.NewHandler, data_loader.NewHandler, data_loader.NewImportHandler, tool.NewHandler, plugin_config.NewHandler, migrate.NewHandler, proto.NewHandler, stream_route.NewHandler, }
授权中间件是在droplet中注册的 而导入导出的路由没有用wgin.Wraps()函数转换为droplet的路由函数

未授权的没用wgin.Wraps()进行二次包装转换.通过全局搜索r.GET

发现两个未授权的接口
r.GET("/apisix/admin/migrate/export", h.ExportConfig) r.POST("/apisix/admin/migrate/import", h.ImportConfig)
通过未授权接口,利用import后台随便建立一个路由。然后进行访问,这里注意的是,不是访问当前的9000端口的。而是访问他管理的apache/apisix 的端口 9080
可采用网上exp,
利用效果如下:


参考链接
- Author:w1nk1
- URL:https://notion-w1nk1.vercel.app//article/db15bd9f-0110-4c6e-b74a-816b7b4fc974
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts