另外一个值得深入的开源组件就是 Apache APISIX,这是一款基于 lua 语言开发,是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

APISIX 提供了 REST Admin API 功能,用户可以使用 REST Admin API 来管理 APISIX,默认情况下只允许 127.0.0.1 访问,用户可以修改 conf/config.yaml 中的 allow_admin 字段,指定允许调用 Admin API 的 ip 列表。

当用户对外开启了 Admin API 且未修改硬编码的缺省 admin_key 的情况下,攻击者可以利用该 admin_key 执行任意 lua 代码。

图片

根据 apisix 官方文档可以知道,在创建路由时用户可以定义一个 filter_func 参数用于处理请求,filter_func 的内容可以是任意的 lua 代码。

图片

那么我们便可以使用默认的 admin_key 创建恶意的 route 并访问以触发 lua 代码执行,达到 rce 的目的,下面是具体步骤:

(1)创建可用的 services:

图片

(2)创建恶意的 route:

图片

最后访问 http://127.0.0.1:9080/api/tforce_test 即可触发预定义的 lua 代码执行。

因此,在内网里攻击云原生 API 网关是比较容易打开一定局面的。

最后编辑: kuteng  文档更新时间: 2022-06-01 16:25   作者:kuteng