Apache APISIX Dashboard API权限绕过导致RCE(CVE-2021-45232)
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漏洞复现
搭建环境后访问ip:9000
看看其漏洞介绍:
利用/apisix/admin/migrate/export和/apisix/admin/migrate/import两个Apache APISIX Dashboard提供的未授权API,分别控制路由的导入和导出
先说导出:/apisix/admin/migrate/expor
默认密码admin/admin到后台,随便创建一个路由:
回到前台,访问路径:ip:port/apisix/admin/migrate/export
弹出文件下载:
查看发现路由被泄露:
再说导入接口:/apisix/admin/migrate/import
这个接口可以控制创建路由,通过写入lua脚本文件,文件格式参考这里:
查看该路由的参数:
要注意的是,通过未授权接口导入lua脚本时,需要带上CRC校验码,即配置文件的最后4个字符。
这里推荐使用该poc:https://github.com/wuppp/cve-2021-45232-exp。自动生成crc发送数据包。
命令执行:
0x03漏洞分析
Github定位漏洞补丁:
https://github.com/apache/apisix-dashboard/compare/v2.10…v2.10.1
api/internal/core/server/http.go:
删除了导入包:“github.com/apisix/manager-api/internal/filter”
删除了鉴权方式:“github.com/apisix/manager-api/internal/filter”
api/internal/filter/authentication_test.go对路由:
/apisix/admin/user/login
/apisix/admin/user/login
进行了token检测
api/test/e2enew/migrate/migrate_test.go定位漏洞接口:
/apisix/admin/migrate/export
/apisix/admin/migrate/export
api/internal/route.go修复方式:
删除原来的过滤器,增加新的过滤器
0x04 总结:
API接口未授权访问一直以来都是令甲方安全人员头疼的问题,在《OWASP API Security Top 10 2019》里面,Broken Object Level Authorization(失效的对象级授权),包括未授权、越权访问等,就是排在第一位的安全问题:
未授权漏洞的出现频率越来越高,且漏洞的利用又相对简单,今后应针对这个方向的漏洞多做积累,多做总结。