声明:本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,本人不承担任何法律及连带责任。 漏洞描述 Apache APISIX 是一个动态
声明:本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,本人不承担任何法律及连带责任。 漏洞描述Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX Dashboard 使用户可通过前端界面操作 Apache APISIX。该漏洞的存在是由于 Manager API 中的错误。Manager API 在 gin 框架的基础上引入了 droplet 框架,所有的 API 和鉴权中间件都是基于 droplet 框架开发的。但是有些 API 直接使用了框架 gin 的接口,从而绕过身份验证。 影响范围Apache APISIX Dashboard < 2.10.1 环境部署通过git clone apisix-docker
修改docker-compose.yml
环境起来后,浏览器通过默认端口9000访问apisix dashboard 后台RCE由于apisix dashboard 默认账号和密码是admin:admin,所以我们先登录到后台,来验证一把远程命令执行 首先创建一个上游服务,点击创建,名称随意命名,目标节点填写我们转发请求的服务,这里我们填写docker附带的Grafana应用,端口号为3000,点击下一步,提交即可。 其次,创建一个路由,名称任意起,路径也是自定义,点击下一步,选择我们刚才创建的上游服务,最后,提交即可。 查看创建的路由 回到路由配置页面,点击配置,然后一直下一步,直到提交时,使用BurpSuite抓包 然后在请求包的body中,添加一个script字段后,发送请求。
再次查看,路由配置信息 接着,我们访问一下: http://192.168.10.171:9080/rce111 docker中看一下,是否创建了Keepblue这个文件 未授权接口RCE如果没有默认密码或者弱密码的话,这时我们就利用未授权接口进行RCE了
首先,使用/apisix/admin/migrate/export导出配置文件 因为是未授权,所以在未登陆情况下,BP抓包后,请求接口改为/apisix/admin/migrate/export,点击send后,看到配置文件信息 在导入配置文件时,会对配置文件的checksum值进行校验,那这里其实是可以通过写脚本算出checksum校验值,或者是根据apisix的源码去计算出新的checksum值 源码位置在:apisix-dashboard-master\api\internal\handler\migrate\migrate.go的ExportConfig函数将其计算源码单独抽取出来,并将需要导入的配置(data)进修替换和插入RCE语句
运行这段脚本,会生成apisixPayload这个文件 这个就是我们要import上去的计算好校验值的新的配置文件,接下来使用python代码可以简单的传到服务端
在攻击机上,开启nc监听 接下来,访问路由地址(http://192.168.10.171:9080/rce111),触发远程命令执行 查看nc反弹shell 反弹成功,说明命令已经执行 |
2023-01-24
2022-08-15
2021-06-25
2022-09-14
2023-02-20