vulnhub-DC-2渗透教程
引言
DC-2 是一个面向初学者的 WordPress 渗透靶场,整个攻击链覆盖信息收集 → 字典生成 → 凭据爆破 → 横向移动 → 权限提升五个阶段。本教程侧重渗透思路的演进,对每一步"为什么这么做"做明确说明,而不只罗列命令。
1. 信息收集
1.1 主机发现
确认目标在线,获取 IP。
nmap -sn 172.16.1.0/24

1.2 全端口扫描与服务识别
nmap -A -sV -p- 172.16.1.21

扫描结果显示目标开放两个端口:
| 端口 | 服务 | 备注 |
|---|---|---|
| 80/tcp | Apache | 标准 Web 端口 |
| 7744/tcp | SSH | 疑似修改默认端口(22) |
参数解析:-A 启用 OS 识别 + 服务版本 + 默认 NSE 脚本 + 路由追踪;-sV 单独再跑一次服务探测(提高识别强度);-p- 扫描全部 65535 端口,避免漏掉非标准端口。
1.3 配置 hosts 域名解析
为保证后续基于域名的访问能正常解析,需在本地 hosts 中追加记录:
echo "172.16.1.21 dc-2" | sudo tee -a /etc/hosts
验证:
ping -c 3 dc-2
2.Web 渗透(WordPress)
2.1 站点指纹识别
访问 http://dc-2/,通过首页特征确认目标为 WordPress 站点。


结果在首页内容中暴露了 flag1:
flag1 提示要点:标准字典可能不奏效,考虑从站点本身生成专属字典;多账号切换可能是突破关键。
2.2 dirb进行目录枚举
dirb http://dc-2

我们经过扫描,获取到了后台管理目录/wp-admin/admin.php,我们访问该目录,发现是WordPress的后台登录页面。

2.3 wpscan 扫描枚举用户名
wpscan --url http://dc-2 --enumerate u

经过用户枚举,发现该web应用下面存在三个账号,分别是admin、Jerry、tom。
3.字典生成与凭据爆破
3.1 cewl 爬取站点生成字典
cewl http://dc-2 -w /tmp/dc2.txt

工具说明:cewl(Custom Word List generator)从目标站点爬取正文,生成针对该站点的专属字典。对于小众站点(人名/术语/产品词),定制字典的命中率远高于通用字典(如 rockyou.txt)。
经过cewl密码生成工具总计生产了238条密码。
3.2 wpscan 密码爆破
wpscan --url http://dc-2 -P /tmp/dc2.txt

爆破成功:
| 用户名 | 密码 |
| Jerry | adipiscing |
| tom | parturient |
3.3 登录 wp-admin 拿 flag2
访问 http://dc-2/wp-login.php,使用 jerry 凭据登录。

在 Pages 列表中找到 Flag 4 页面,进入后得到 flag4:
flag4 提示要点:与 flag1 呼应——再次强调字典生成工具与多账号切换,并提示剩余 flag 需要通过 SSH(端口 7744)从其他用户入手。
4. SSH 横向移动
4.1 hydra 爆破 tom 凭据
复用 cewl 字典,对 SSH(端口 7744)爆破 tom 账号:
hydra -l tom -P /tmp/dc2.txt ssh://dc-2 -s 7744 -t 4

爆破成功:
| 用户 | 密码 |
|---|---|
| tom | parturient |
4.2 SSH 登入
ssh -p 7744 tom@dc-2

登入后发现 shell 受限(rbash),无法直接执行大部分命令。

4.3 绕过 rbash 限制
rbash 限制的本质是:清空 PATH、锁定 SHELL 环境变量、禁止修改 PATH。在该限制下,经典的 vi :set shell=/bin/bash + :shell 路径实际上无法逃逸vi 内部 exec() 时已找不到 /bin/bash,且 SHELL 被锁定。
可用的逃逸路径是利用 bash 内建命令的 BASH_CMDS 哈希表:
BASH_CMDS[a]=/bin/sh;a export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

原理:BASH_CMDS 是 bash 的命令名查找关联数组,rbash 的限制作用于 PATH 与 SHELL,不会触及该哈希——将 /bin/sh 注册为名字 a 的命令后,bash 内部直接 execve() 调用,绕开 PATH 限制。
BASH_CMDS 帮你绕进了 sh,但新 shell 启动时还是会读受限的 PATH,所以 cat、vim 照样找不到。新 shell 不继承 BASH_CMDS,只继承 PATH,所以我们需要进入新的shell以后立即进行export。
绕过 rbash 后恢复正常 shell,在 tom 家目录中找到 flag3:

flag3 提示要点:tom 一直在追 jerry,提示下一步应以 jerry 身份继续(su 切换)。
五、权限提升
5.1 sudo -l 探测
sudo -l

我们发现tom没有sudo权限,但是由于在flag3.txt中提示我们可以使用su进行身份切换,那么我们使用su - jerry进行身份切换,由于su不需要使用sudo权限,只需要知道jerry的密码即可,根据前期的信息采集,我们已经知道了jerry的密码,下面切换即可。
5.2 切换 jerry 拿 flag4
sudo -u jerry

在 jerry 家目录找到 flag4:

flag2 提示要点:需要 root 权限才能访问最终 flag;提示 git 提权路径。
5.3 git 提权拿到 flag5
jerry 拥有 root 级别的 git sudo 权限。利用 git 的 pager 逃逸提权至 root:
sudo git -p help config
进入 git 的分页模式(less),输入:
!/bin/sh

拿到 root shell 后:
cd theflag.txt

至此,5 个 flag 全部集齐。
总结
攻击链回顾
信息收集(nmap) ↓ Web 渗透(wpscan / dirb) ↓ 字典生成(cewl) ↓ 凭据爆破(wpscan / hydra) ↓ 横向移动(SSH + rbash 绕过) ↓ 权限提升(sudo su + git 提权) ↓ flag 收割
核心收获
cewl 是定制字典的利器 —— 任何站点都可作为字典源,不依赖通用字典的"运气"。
多账号切换是 WP 站点的常见突破口 —— 不要满足于拿下一个账号,剩余用户往往通向更深层。
rbash 不是绝对隔离 ——
vi/vim是经典的逃逸点,遇到受限 shell 优先尝试。git -p help config 是经典提权 —— 任何允许
sudo git的环境都应立刻排查。
拓展思考
如果 cewl 字典也不够大,可以加入
cewl -d 3(爬取深度 3)或结合crunch生成变体。真实环境中,WordPress 站点还应关注插件漏洞(如
wp-file-managerCVE-2020-25213),本靶场暂未涉及。rbash 绕过方式不只 BASH_CMDS 一种,还可通过
man、python、awk等多种工具逃逸。
本文首发于个人博客,转载请保留原文链接。

