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

image-20210310085802212

由探测结果可知,靶机的IP为192.168.137.147

2、扫描开放的端口和服务

nmap -sS -sV -T5 -p- 192.168.137.147

image-20210310090850654

得到开放的端口信息:

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号端口,我们连接看看

image-20210310091518095

探测结果发现服务器没有禁用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工具爆破出了一下的用户名

image-20210310141941971

finger:Linux finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程

参数:finger [选项] [使用者] [用户@主机]
命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。 

image-20210310142655995

通过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
    禁止输出描述头部信息

image-20210310144337257

通过-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

image-20210310154553385

得到密码letmein, 然后ssh登录user

三、漏洞利用

查看/etc/passwd文件得到vulnix用户的uid和gid,由此,我们可以在本地创建一个相同uid和gid的vulnix用户来进入/tmp/nfs

image-20210310154736242

useradd vulnix -u 2008

创建好vulnix用户之后,我们进入/tmp/nfs目录下,里面就是一些隐藏的文件夹

image-20210310155431530

因为这个共享的是vulnix用户的家目录,因此我们可以在/tmp/nfs目录下上传生成的ssh密钥,来远程登录vulnix用户,使用ssh-keygen来生成密钥

image-20210310160034885

然后直接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身份

image-20210310194219121

总结

这台靶机的难点不多,但是挺需要技巧的,思路要清晰。

posted @ 2021-03-10 19:50  l2sec  阅读(532)  评论(1编辑  收藏  举报