主机探测
ip为192.168.148.253
端口扫描
开放的端口比较多
2049 NFS 挂载
- 通过
rpcinfo
命令来确定主机上是否运行或挂载了NFS服务
- 通过
showmount -e ip
- 共享挂载
sudo mount -t nfs 192.168.148.253:/home/vulnix /tmp -o nolock
挂载到本地目录下
不过挂载之后不允许访问,应该是权限不够
- 卸载挂载点
sudo umount /tmp
79 finger 探测存在的用户
Finger 服务用于检索计算机用户的详细信息。通常,提供的信息包括用户的登录名、全名。
kali自带命令finger
,可以探测存在哪些用户
如果存在则是以下这样的查询结果
不存在的用户则是这样:
网上的爆破工具我下载失败,于是写了个bash脚本,代入用户名字典执行finger
指令,能爆破出,但速度较慢用时较长。还可以用msf进行探测use auxiliary/scanner/finger/finger_users
说明存在user
用户
还可以用另一种方式
smtp-user-enum -M VRFY -U /usr/share/metasploit-framework/data/wordlists/unix_users.txt -t 192.168.148.253
hydra爆破用户密码
指定user
进行爆破
得到密码为letmein
user用户ssh登录获取shell
账号密码登录,获取shell
经过一番信息收集,没有找到能提权的点,脏牛提权也许可以,但不到万不得已不是很想脏牛提权。
绕过NFS鉴权访问挂载点
之前挂载目录之后,无法访问,拿到shell之后看看是怎么配置的:
- 允许网络中的任何主机挂载
/home/vulnix
目录。 - 这些客户端将能读写该目录。
- 任何客户端的 root 用户在 NFS 服务器上将拥有匿名用户权限(而不是 root 权限),以此增强安全性。
[!note] NFS 依赖于用户的 UID(用户标识符)和 GID(组标识符)进行文件和目录的权限控制。
当客户端请求访问 NFS 共享中的文件时,NFS 使用客户端的 UID 和 GID 来决定是否允许访问。
因此,服务器和客户端必须在用户 UID 和 GID 上保持一致,否则会出现权限问题。
查看命令:
cat /etc/passwd
,cat /etc/group
因此,在本地创建一个用户,UID和GID都是2008即可
vulnix用户ssh登录
进入挂载点之后,创建.ssh
,本地攻击机生成公钥后复制到authorized_keys
中,注意赋予权限
直接-i id_rsa
会提示让输入密码,主要原因是openssh 版本的升级
ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -i id_rsa vulnix@192.168.148.253 -p 22
sudoedit修改文件添加/root挂载点
sudo -l
之后发现当前用户可以无密码以root身份修改nfs配置文件/etc/exports
添加挂载点/root
,这样之后我们可以在本地挂载root
目录,再次上传自己的公钥进行登录
ctrl+X 然后Y
查看一下,添加成功。如果没成功,重启虚拟机即可
如法炮制root用户ssh登录,提权
这个时候我们再次挂载,注意之前的目录要卸载挂载,就能拿到flag了
如法炮制上传自己的公钥,进行ssh登录,成功提权
ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -i id_rsa root@192.168.148.253 -p 22
Got flag
总结
1、之前也打过以nfs为突破口的靶机,不过没有遇到无权限访问。打完这台也清楚了nfs的鉴权方式是怎样的
2、finger 79端口,可以进行系统用户探测
3、上传自己的公钥进行ssh登录,这里要对ssh登录方式熟练