前言
靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/
靶机:DC1 (VirtualBox) IP:192.168.10.110
攻击机:Kali (VMware) IP:192.168.10.107
说明:DC1需要找到5个flag,最终目标是在root的主目录中找到并读取该flag
靶机配置及说明
首先先看靶机与攻击机的配置,二者均是桥接模式(建议靶机和kali都保存快照,以便不时之需)
kali配置:
靶机配置:
开始
首先查看kali的ip得到192.168.10.107
nmap查看靶机ip得到192.168.10.110
继续nmap嗅探靶机其余信息,发现开放22/80
通过浏览器打开这个网站,用Firefox的插件看到CMS是Drupal 7
继续查看robots.txt,看看有没有用的信息
我们并没有得到有用的信息,只是找到了几个没啥用的页面,继续扫描一下目录
扫描依旧也没有什么结果,那我们换个思路,可以搜索一下是否有可利用的漏洞并通过msf进行利用
输入msfconsole
这里我就用Drupalgeddon2漏洞(CVE-2018-7600),Drupal系统没有对表单API接口的Ajax请求输入进行充分的检查,使得攻击者能够向内部表单结构中注入一个恶意的载荷,导致Drupal系统在未进行用户认证的情况下执行这个载荷。
通过利用这个漏洞,一个攻击者能够接管任何Drupal系统用户的整个站点。
这里我们只需要设置靶机的ip就可以执行
查看一下权限,发现是www-data
我们可以看到打开session连接到靶机,接下来我们继续反弹一个交互的shell
flag1
我们可以看到自己当前的权限以及所在路径,那我们ls查看一下其他文件
我们顺利拿到flag1,同时也拿到了提示信息:寻找配置信息百度即可知道默认配置信息位置。
flag2
一般网站目录里都有个数据库配置文件,里面包含着账号和密码。然后我们查看/www/sites.default/settings.php,发现了网站数据库账号密码(这里最好用more查看不至于落掉重要信息)
可以看到flag2也在这个文件中,并得到提示信息:暴力破解和字典爆破不是获取权限的唯一方式(而且你需要获得权限)
我们也顺利地拿到了数据库的一些关键信息(数据库名、登录名、密码),然后我们按q退出,顺着线索继续登录数据库。
flag3
mysql -h 127.0.0.1 -u dbuser -p
发现其中有个user表,在user表中发现admin用户
通过查询 users报中的账号得知admin的密码是一串加密密文,下一步可以在网站目录里面找找有没有加密的脚本文件,通过重置管理员的密码来获取flag。
然后在网站的根目录下发现有一个scripts的文件夹,script这个单词本身就是脚本。最终在这个目录里面发现一个名为password-hash.sh的脚本文件,使用加密脚本加密新密码666666,生成加密密文,然后登录系统查看flag3。
执行脚本对密码666666加密
./password-hash.sh 666666
报错,提示缺少文件。检查一下这个脚本文件。
cat password-hash.sh
看到这个我发现是文件引用出现了问题,引用的文件在网站根目录下的include文件夹中,但是我们执行脚本的目录是scripts,所以这个脚本就会把scripts当成根目录,所以我们应该到网站更目录执行这个脚本。
cd /var/www
./scripts/password-hash.sh 666666
得到666666的加密密文$S$Di/KeMGUUjEbhgEZIlGETXANuJDs.vM3a07EL6wKnmCTzUGExuNZ,接下来我们需要重置管理员的密码为666666的加密密文,还得进入数据库直接更新密码。
update drupaldb.users set pass='$S$Di/KeMGUUjEbhgEZIlGETXANuJDs.vM3a07EL6wKnmCTzUGExuNZ' where name='admin';
如上图所示说明更新成功,接下来登陆一下管理员账号,
登陆后点击左上角的Dashboard,然后点击中间的flag3。
然后得到flag3,并提示:用命令来获取密码。
flag4
先看看passwd文件,发现有一个flag4的用户
很明显flag4在/home/flag4目录下
顺利得到flag4,并得到提示:你能用相同的方法在root目录下找到最终flag吗?可能吧,但可能没那么容易。
flag5(最后一个flag)
根据提示能想到suid提权,将目前的www-data用户权限提到root权限,先查询一下具有root权限的其它命令:
find / -user root -perm -4000 2>/dev/null
使用find来执行命令,可以发现find命令本身就是root权限
find flag4.txt -exec "whoami" \;
接着利用find提权
find flag4.txt -exec "/bin/sh" \;
查看root目录下的flag文件,得到最后一个flag
相关知识点
1、msf的熟练使用以及搜索可利用漏洞(Drupal)
2、留意目标网站的配置文件(more慢慢查看别错过重要信息)
3、数据库管理员提权(更新管理员密码或者添加一个新用户)
4、suid提权的命令(nmap、vim、find、bash、more、less、nano、cp)