云安全之Kubernetes API Server 8080端口未授权

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
云安全中心漏洞修复资源包免费试用,100次1年
云安全中心 免费版,不限时长
简介: 在Kubernetes中,API Server是与集群通信的核心组件之一。默认情况下,Kubernetes API Server会在端口8080上侦听请求,如果Kubernetes API Server在8080端口上启用了未授权访问,那么攻击者可以通过该端口访问API Server并获取敏感信息或执行攻击。这可能会影响任何使用未经身份验证的HTTP协议连接的版本,包括Kubernetes的早期版本和未经修补的漏洞版本。

一.具体原理

   在Kubernetes中,API Server是与集群通信的核心组件之一。默认情况下,Kubernetes API Server会在端口8080上侦听请求,如果Kubernetes API Server在8080端口上启用了未授权访问,那么攻击者可以通过该端口访问API Server并获取敏感信息或执行攻击。这可能会影响任何使用未经身份验证的HTTP协议连接的版本,包括Kubernetes的早期版本和未经修补的漏洞版本。

image.png



二.利用条件


  • 1)  k8s版本小于1.16.0

      2)  8080对公网开放


三.漏洞复现

   在一般比较新的Kubernetes版本中,8080端口的HTTP服务是默认不启动的,我们可以通过命令“netstat-anpt|grep 8080"命令查看8080端口是否启动,如图1-1通过所示,如果Kubernetes使用者在/etc/kubernetes/manifests/kube-apiserver.yaml中配置了“- -–insecure-port=8080”及“- -–insecure-bind-address=0.0.0.0”这两个配置项,如图1-2所示,那么攻击者只要网络可达就可以直接对K8S进行未授权攻击

image.png

图1-1 查看8080端口是否启动

image.png

图1-2 8080端口错误配置


当我们在etc/kubernetes/manifests/kube-apiserver.yaml错误配置了之后,我们再访问K8S的8080端口,就可以成功复现出了K8S未授权漏洞,如图1-3所示。

image.png

图1-3 API Server 8080端口未授权



四.利用过程


1)我们可以通过在本地或者攻击机上使用Kubectl命令获取相关K8S集群的信息,例如我们通过执行如下命令来获取Nodes节点信息,执行结果如图1-4所示。

kubectl -s http://xxx.xxx.xxx.xxx:8080 get nodes

image.png

图1-4 通过Kubectl命令来获取Nodes节点信息


2)同时也可以执行如下命令来直接查看当前K8S集群中所有Pod,执行结果如图1-5所示。

kubectl -s http://xxx.xxx.xxx.xxx:8080 get pods -A

image.png

图1-5 通过Kubectl命令来获取Pod信息



五.防御措施


   如果您发现Kubernetes API Server的8080端口未授权访问,这可能意味着存在一个安全风险,可能会导致未经授权的用户或攻击者对集群进行操作。解决此问题的一种常见方法是通过以下步骤限制对API Server的访问:

1).使用网络策略:在Kubernetes中,可以使用网络策略(Network Policies)来限制进出集群的流量。通过定义适当的网络策略,可以指定哪些Pod可以访问API Server的8080端口,以及允许访问的源IP范围等。

2). 启用身份验证和授权:确保API Server启用了身份验证和授权功能。Kubernetes提供了多种身份验证和授权机制,例如基于证书的身份验证、RBAC(Role-Based Access Control)等。配置适当的身份验证和授权规则,以确保只有经过身份验证的用户可以访问API Server。

3). 使用TLS加密:启用API Server的TLS加密,以加密传输过程中的数据。使用有效的证书和密钥来保护API Server的通信。

4). 使用网络隔离:确保API Server不直接暴露在公共网络中。可以使用防火墙规则或网络安全组来限制对API Server端口的访问,只允许受信任的IP地址或特定网络访问该端口。

5). 更新默认配置:Kubernetes提供了一些默认配置文件,建议不要直接使用这些默认配置,而是根据安全最佳实践进行自定义配置。检查您的API Server配置文件,确保已经采取了适当的安全措施。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
1087 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
6月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
398 17
|
6月前
|
人工智能 JavaScript 测试技术
构建智能 API 开发环境:在 Cursor 中连接 Apifox MCP Server
本文介绍了如何将Apifox MCP Server与Cursor结合,通过AI直接获取和理解API文档,大幅提升开发效率。首先需配置Apifox的Access Token和项目ID,并在Cursor中设置MCP连接。实际应用场景包括快速生成模型代码、同步更新接口文档与代码、生成CRUD操作、搜索API文档及自动生成测试用例。此外,还提供了管理多项目、安全性实践和优化AI响应质量的技巧。这种组合可显著减少从API规范到代码实现的时间,降低错误率并加速迭代过程,为开发者带来更高效的体验。
|
6月前
|
JavaScript 前端开发 Java
Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案
本文解决了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use的问题,并通过介绍端口的使用原理和操作系统的端口管理机制,可以更有效地解决端口冲突问题,并确保Web服务器能够顺利启动和运行。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
894 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
API 开发者
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
419 5
|
Docker 容器
【Azure 应用服务】App Server 部署后,Docker报错,找不到8080端口
【Azure 应用服务】App Server 部署后,Docker报错,找不到8080端口
149 0
|
Kubernetes 网络协议 Docker
在K8S中,ip-cer-pod与docker原生端口映射有何区别?
在K8S中,ip-cer-pod与docker原生端口映射有何区别?
|
Kubernetes API 容器
在K8S中,Service的Nodeport端口范围?
在K8S中,Service的Nodeport端口范围?
|
Kubernetes 网络协议 网络安全
在K8S中,如果不能在容器内部使用netstat查看端口号的情况下,还有其他方式吗?
在K8S中,如果不能在容器内部使用netstat查看端口号的情况下,还有其他方式吗?

热门文章

最新文章