漏洞分析 - Kong未授权访问漏洞(CVE-2020-11710)
字数 1867 2025-08-25 22:58:34

Kong未授权访问漏洞(CVE-2020-11710)分析报告

1. 漏洞概述

Kong是一款开源的、"云原生"(cloud-native)的API Gateway应用程序,通过其丰富的插件可以实现对访问流量的精细控制、访问鉴权等功能。CVE-2020-11710是Kong社区版中存在的一个未授权访问漏洞,允许攻击者通过公开暴露的Admin Restful API端口管理Kong Gateway的全部功能。

2. 受影响版本

  • Kong Gateway Community (社区版) version <= 2.0.2
  • Kong Enterprise (企业版)不受影响,因其支持角色控制和鉴权

3. 漏洞原理

3.1 默认端口配置

Kong默认使用以下端口:

端口类型 HTTP端口 HTTPS端口 用途说明
Admin Restful API 8001 8444 管理接口,应仅限管理员访问
Proxy Port 8000 8443 提供给公网访问的代理端口

3.2 漏洞根本原因

漏洞源于不恰当的配置导致"Admin Restful API的端口可被公网访问"。具体表现为:

  1. 默认安装配置中,Admin API监听在0.0.0.0(所有网络接口)
  2. Docker容器映射时直接将8001和8444端口暴露给外部网络

4. 漏洞复现

4.1 漏洞环境搭建

使用修复漏洞前的官方安装步骤(使用Docker安装Kong Gateway Community):

$ docker run -d --name kong \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
     -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
     -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
     -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
     -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
     -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
     -p 8000:8000 \
     -p 8443:8443 \
     -p 8001:8001 \
     -p 8444:8444 \
     kong:latest

关键问题参数:

  • -p 8001:8001:将容器的8001端口映射到主机的8001端口,允许外部访问
  • -p 8444:8444:同上,针对HTTPS端口
  • KONG_ADMIN_LISTEN=0.0.0.0:8001:Admin API监听所有网络接口

4.2 漏洞验证

直接访问http://目标IP:8001https://目标IP:8444,若能获取Kong的管理API响应,则存在漏洞。

5. 漏洞利用

攻击者可以利用此未授权访问漏洞执行以下操作:

5.1 信息泄露

通过Admin API获取当前配置信息,包括所有"服务"地址等敏感信息。

5.2 可回显的SSRF

通过添加Route到内网其他重要"(web)服务"实现可回显Response的SSRF攻击。在云环境中,此类SSRF危害更大,可能通过访问云提供商的管理API获取云服务器访问权限。

5.3 MITM攻击

攻击者可实现中间人攻击,劫持所有普通用户发向某个"(web)服务"的HTTP/HTTPS请求和响应。

MITM攻击流程

  1. 复制现有API:复制原本存在的Kong api_1得到Kong api_2,两者都指向service 1
  2. 创建并配置MITM站点
    • 创建中间人站点mitm.evil.com
    • 配置该站点实现请求处理(保存/修改/丢弃等),并将处理后的请求转发到Kong api_2
  3. 修改原API指向:将Kong api_1指向的服务从service 1改为mitm.evil.com

劫持效果

用户访问流程变为:

client → Kong api_1(hijacking) → mitm.evil.com(forwarding) → api_2 → service 1
service 1 → api_2 → mitm.evil.com(forwarding) → Kong api_1(hijacking) → client

MITM检测特征

  • 被劫持服务(service 1)只能收到来自mitm.evil.com的请求
  • Kong服务器会主动连接互联网的mitm.evil.com

6. 修复方案

6.1 配置修复

  1. 限制Admin API访问

    • 修改docker-compose.yaml,将:
      -p 8001:8001
      -p 8444:8444
      
      改为:
      -p 127.0.0.1:8001:8001
      -p 127.0.0.1:8444:8444
      
    • 或者修改Kong配置中的KONG_ADMIN_LISTEN127.0.0.1:8001
  2. 设置严格的ACL:仅允许必要的IP访问Admin API端口

6.2 升级建议

升级到Kong Gateway Community 2.0.3及以上版本,官方已修复此问题。

7. 总结

CVE-2020-11710的根本原因是Kong社区版默认配置不当导致Admin Restful API端口暴露给公网。由于Kong常作为API网关部署在云环境中,且管理南北向流量,一旦存在未授权访问漏洞,危害极大。管理员应:

  1. 严格限制Admin API的访问权限
  2. 定期检查Kong的配置安全性
  3. 及时更新到最新版本

此漏洞提醒我们,即使是功能强大的API网关,不当的配置也可能导致严重的安全问题,特别是在云环境中部署时更需谨慎。

Kong未授权访问漏洞(CVE-2020-11710)分析报告 1. 漏洞概述 Kong是一款开源的、"云原生"(cloud-native)的API Gateway应用程序,通过其丰富的插件可以实现对访问流量的精细控制、访问鉴权等功能。CVE-2020-11710是Kong社区版中存在的一个未授权访问漏洞,允许攻击者通过公开暴露的Admin Restful API端口管理Kong Gateway的全部功能。 2. 受影响版本 Kong Gateway Community (社区版) version <= 2.0.2 Kong Enterprise (企业版)不受影响,因其支持角色控制和鉴权 3. 漏洞原理 3.1 默认端口配置 Kong默认使用以下端口: | 端口类型 | HTTP端口 | HTTPS端口 | 用途说明 | |---------|---------|----------|---------| | Admin Restful API | 8001 | 8444 | 管理接口,应仅限管理员访问 | | Proxy Port | 8000 | 8443 | 提供给公网访问的代理端口 | 3.2 漏洞根本原因 漏洞源于不恰当的配置导致"Admin Restful API的端口可被公网访问"。具体表现为: 默认安装配置中,Admin API监听在 0.0.0.0 (所有网络接口) Docker容器映射时直接将8001和8444端口暴露给外部网络 4. 漏洞复现 4.1 漏洞环境搭建 使用修复漏洞前的官方安装步骤(使用Docker安装Kong Gateway Community): 关键问题参数: -p 8001:8001 :将容器的8001端口映射到主机的8001端口,允许外部访问 -p 8444:8444 :同上,针对HTTPS端口 KONG_ADMIN_LISTEN=0.0.0.0:8001 :Admin API监听所有网络接口 4.2 漏洞验证 直接访问 http://目标IP:8001 或 https://目标IP:8444 ,若能获取Kong的管理API响应,则存在漏洞。 5. 漏洞利用 攻击者可以利用此未授权访问漏洞执行以下操作: 5.1 信息泄露 通过Admin API获取当前配置信息,包括所有"服务"地址等敏感信息。 5.2 可回显的SSRF 通过添加Route到内网其他重要"(web)服务"实现可回显Response的SSRF攻击。在云环境中,此类SSRF危害更大,可能通过访问云提供商的管理API获取云服务器访问权限。 5.3 MITM攻击 攻击者可实现中间人攻击,劫持所有普通用户发向某个"(web)服务"的HTTP/HTTPS请求和响应。 MITM攻击流程 复制现有API :复制原本存在的Kong api_ 1得到Kong api_ 2,两者都指向service 1 创建并配置MITM站点 : 创建中间人站点mitm.evil.com 配置该站点实现请求处理(保存/修改/丢弃等),并将处理后的请求转发到Kong api_ 2 修改原API指向 :将Kong api_ 1指向的服务从service 1改为mitm.evil.com 劫持效果 用户访问流程变为: MITM检测特征 被劫持服务(service 1)只能收到来自mitm.evil.com的请求 Kong服务器会主动连接互联网的mitm.evil.com 6. 修复方案 6.1 配置修复 限制Admin API访问 : 修改docker-compose.yaml,将: 改为: 或者修改Kong配置中的 KONG_ADMIN_LISTEN 为 127.0.0.1:8001 设置严格的ACL :仅允许必要的IP访问Admin API端口 6.2 升级建议 升级到Kong Gateway Community 2.0.3及以上版本,官方已修复此问题。 7. 总结 CVE-2020-11710的根本原因是Kong社区版默认配置不当导致Admin Restful API端口暴露给公网。由于Kong常作为API网关部署在云环境中,且管理南北向流量,一旦存在未授权访问漏洞,危害极大。管理员应: 严格限制Admin API的访问权限 定期检查Kong的配置安全性 及时更新到最新版本 此漏洞提醒我们,即使是功能强大的API网关,不当的配置也可能导致严重的安全问题,特别是在云环境中部署时更需谨慎。