VulnHub-HackLAB:Vulnix 靶场渗透测试
时间:2021.3.10
靶场信息:
地址:https://www.vulnhub.com/entry/hacklab-vulnix,48/
发布日期:2012年9月10日
目标:得到root权限&找到flag.txt
一、信息收集
1、获取靶机IP地址
nmap -sP 192.168.137.0/24
由探测结果可知,靶机的IP为192.168.137.147
2、扫描开放的端口和服务
nmap -sS -sV -T5 -p- 192.168.137.147
得到开放的端口信息:
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0)
25/tcp open smtp Postfix smtpd
79/tcp open finger Linux fingerd
110/tcp open pop3?
111/tcp open rpcbind 2-4 (RPC #100000)
143/tcp open imap Dovecot imapd
512/tcp open exec netkit-rsh rexecd
513/tcp open login?
514/tcp open tcpwrapped
993/tcp open ssl/imap Dovecot imapd
995/tcp open ssl/pop3s?
2049/tcp open nfs_acl 2-3 (RPC #100227)
37362/tcp open mountd 1-3 (RPC #100005)
41384/tcp open status 1 (RPC #100024)
41432/tcp open mountd 1-3 (RPC #100005)
51519/tcp open mountd 1-3 (RPC #100005)
58324/tcp open nlockmgr 1-4 (RPC #100021)
二、漏洞探测
由于开放了25号端口,我们连接看看
探测结果发现服务器没有禁用VRFY命令,也就是说可以通过工具枚举出smtp的用户名,这里有三种可以利用的工具
- smtp-user-enum:是kali自带的,使用Perl编写的工具
命令:smtp-user-enum -M VRFY -U /usr/share/metasploit-framework/data/wordlists/unix_users.txt -t 192.1678.137.147
参数:
-M <mode> 使用方法方式 EXPN, VRFY or RCPT (默认: VRFY)
-U <file> 通过smtp服务指定文件里的用户名检查
-t <host> 指定主机来运行smtp服务器主机服务
- smtp_enum:metasploit有辅助模块smtp_enum,可以基于字典枚举smtp用户名,设置比较简单,主要是常规的远程主机地址、端口号、用户名字典、线程数等,其中的UNIXONLY是用于设置是否跳过对微软系的测试,这是由于Windows的SMTP服务命令稍有不同
命令:use auxiliary/scanner/smtp/smtp_enum
show options
- smtp-enum-users:nmap也有名为smtp-enum-users的扫描脚本可供使用,可以通过--script-args smtp-enum-users.methods={EXPN,RCPT,VRFY}设置扫描方式,如果未指定,按照RCPT、VRFY、EXPN的顺序进行测试,通过--script-args userdb=user_path,passdb=pass_path指定字典
命令:nmap -p 25 --script smtp-enum-users.nse 192.168.137.147
这里使用smtp-user-enum工具爆破出了一下的用户名
finger:Linux finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程
参数:finger [选项] [使用者] [用户@主机]
命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。
通过finger命令我们知道这两个用户都是有效的,然后我们尝试攻击其他端口,在2049端口上开放了NFS
showmount命令:用于查询NFS服务器相关的信息
Usage: showmount [-adehv]
[--all] [--directories] [--exports]
[--no-headers] [--help] [--version] [host]
-a或--all
以 host:dir 这样的格式来显示客户主机名和挂载点目录
-d或--directories
仅显示被客户挂载的目录名
-e或--exports
显示NFS服务器的输出清单
-h或--help
显示帮助信息
-v或--version
显示版本信息
--no-headers
禁止输出描述头部信息
通过-e参数查看服务器共享文件夹的列表,发现/home/vulnix文件夹是可以共享的,我们将其挂载到/tmp/nfs目录下,挂载成功后,进入nfs目录提示权限不够,应该是设置了root_squash,要vnlnix用户才可以访问,并且得具有与目标上相同的id和gid,根据前面的探测发现靶机开放了22号端口,我们试试爆破一下user用户的密码
hydra -l user -P /usr/share/wordlists/rockyou.txt 192.168.137.147 ssh
得到密码letmein, 然后ssh登录user
三、漏洞利用
查看/etc/passwd文件得到vulnix用户的uid和gid,由此,我们可以在本地创建一个相同uid和gid的vulnix用户来进入/tmp/nfs
useradd vulnix -u 2008
创建好vulnix用户之后,我们进入/tmp/nfs目录下,里面就是一些隐藏的文件夹
因为这个共享的是vulnix用户的家目录,因此我们可以在/tmp/nfs目录下上传生成的ssh密钥,来远程登录vulnix用户,使用ssh-keygen来生成密钥
然后直接ssh登录即可
四、提权
通过sudo -l可以看到sudo提权,可以以root用户身份执行sudoedit /etc/exports,编辑/etc/exports该文件,通过用no_root_squash替换root_squash来实现,再将bash拷贝到共享目录下,即可
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!
root_squash:在登入 NFS 主机使用分享之目录的使用者,如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份
也可以添加下面这一行,使nfs开放root目录,挂载上去,就像上面一样,生成私钥,用私钥连接,然后就是root身份
总结
这台靶机的难点不多,但是挺需要技巧的,思路要清晰。