漏洞描述
在2.10.1之前的Apache APISIX Dashboard中,Manager API使用了两个框架,并在框架‘gin’的基础上引入了框架‘droplet’,所有的API和认证中间件都是基于框架‘droplet’开发的,但有些API直接使用框架‘gin’的接口,从而绕过了认证。
利用条件
漏洞原理
对一个漏洞的分析、先提出几个问题:
1. 是什么漏洞
分析思路(在gtihub上对提交的源码做分析、涉及到认证相关的代码)
点进去看修改的代码
移除了 filter包、中间件鉴权方式
修改了authentication文件,对login、version及未经认证的接口处理做了修改。
修改了authentication_test.go 做了修改,对各种状态的请求做了修改。
/apisix/admin/migrate/import
漏洞验证
通过访问 http://127.0.0.1:9000/apisix/admin/migrate/export 下载到配置文件 apisix-config.bak
漏洞利用
通过在路由列表、查看数据时、添加script字段、后跟系统命令。
最终脚本执行是在管理apache/apisix 的 9080端口的容器里
访问创建的路由 http://11.22.33.101:9080/dream 执行扩展脚本
修复建议
-
升级到最新版本(https://github.com/apache/apisix-dashboard);
-
接口添加token验证;
-
建立白名单、做ip验证。
往期· 推荐
原文始发于微信公众号(星阑科技):【技术干货】CVE-2021-45232 APISIX Dashboard 越权漏洞