0x00 漏洞描述
Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX Dashboard 使用户可通过前端界面操作 Apache APISIX。该漏洞的存在是由于 Manager API 中的错误。Manager API 在 gin 框架的基础上引入了 droplet 框架,所有的 API 和鉴权中间件都是基于 droplet 框架开发的。但是有些 API 直接使用了框架 gin 的接口,从而绕过身份验证。
0x01 影响版本
Apache APISIX Dashboard 2.7 - 2.10 版本
0x02 漏洞分析
根据https://nvd.nist.gov/vuln/detail/CVE-2021-45232 分析得出是两个api出的问题,造成的未授权
接着来到该项目的github开源地址,定位补丁
发现此处修复鉴权,那么跟进去看一下
首先在==http.go==删除了目录==/manager-api/internal/filter==的包导入并且删除了filter鉴权方式
跟进修复后目录==/manager-api/internal==
发现相关修复点
继续跟进修复补丁
修改了==api/internal/filter/authentication.go==与==api/internal/filter/authentication_test.go==的鉴权方式
路径==/apisix/admin/tool/version==,可得到版本信息,其他路径均会跳回登录界面
在test中发现路径==/apisix/admin/routes==,经过测试,此路径需要授权,继续跟进
在后面经过一小部分的地方其他修复后,定位到==api/internal/route.go==,此为官方描述未授权点之一
发现新增鉴权,猜测与api漏洞点相关,继续跟进
之后发现==api/test/e2enew/migrate/migrate_test.go==做了大量修改
首先对两个路径==/apisix/admin/migrate/export==和==/apisix/admin/migrate/import==新增了鉴权方式,结合官方漏洞描述,猜测这两个路径为漏洞点,继续跟进
发现在原有访问==/apisix/admin/migrate/export==此路径前新增了四个了对http获取token的鉴权方式。由此来判断请求是否含有正确的token,由此判断,该路径为漏洞点。
0x03 漏洞复现
访问
http://xxx.xxx.xxx.xxx:9000/apisix/admin/migrate/export
0x04 修复建议
1.更改默认用户名和密码
2.升级至官方最新版本:https://github.com/apache/apisix-dashboard/releases/tag/v2.10.1
3.设置白名单,限制ip访问。
0x05 参考
https://github.com/apache/apisix-dashboard
https://nvd.nist.gov/vuln/detail/CVE-2021-45232
https://apisix.apache.org/zh/blog/2021/12/28/dashboard-cve-2021-45232/