跳到主要内容

WordPress 攻击面梳理

WordPress 的攻击面高度标准化:REST API 与 RSS 暴露用户、XML-RPC 提供爆破通道、插件引入版本化漏洞、后台自带可写代码的编辑器。测试就是沿这条链逐段排查。

仅限授权环境

对 CMS 的枚举、爆破与漏洞利用会产生大量请求并写入文件,只能在授权范围内进行。


用户枚举

来源方法
REST APIGET /wp-json/wp/v2/users 直接返回用户名列表
sitemap站点地图中的作者归档链接
RSSfeed 项中的 dc:creator 元素泄露作者名

XML-RPC 爆破与密码字典

xmlrpc.phpwp.getUsersBlogs 可在单请求内验证一组用户名/密码,响应中的 isAdmin 字段还能判断账号 是否为管理员

curl -sS -X POST http://target/xmlrpc.php \
-d '<methodCall><methodName>wp.getUsersBlogs</methodName><params>
<param><value><string>admin</string></value></param>
<param><value><string>password1</string></value></param>
</params></methodCall>'

错误响应对“用户不存在”与“密码错误”的措辞不同,差异响应可用来枚举有效用户名;且 XML-RPC 通常不受登录限速保护,是首选爆破通道。

字典来源优先级:HTML 注释(开发遗留的账号与提示)→ 社区成员名 → 文章正文主题词。主题词表可用 CeWL 从目标页面生成,用法见 CeWL 主题词表辅助目录发现


版本与插件定位

目标方法
WP 版本页脚指纹(meta generator、版本样式参数)
插件版本插件 readme.txt 中的 Stable tag 字段
自动化WPScan 枚举主题、插件、用户与已知漏洞

WPScan 被动探测依赖页面静态引用,插件仅在前端 JS 动态加载时扫不到。用 curl 穷举高频插件路径补全:

for p in wpdiscuz simple-file-list contact-form-7 elementor; do
code=$(curl -sS -o /dev/null -w '%{http_code}' \
"http://target/wp-content/plugins/$p/readme.txt")
[ "$code" = "200" ] && echo "[+] $p"
done

readme.txt 命中即确认插件存在与版本。


插件漏洞利用:两个典型模式

wpDiscuz CVE-2020-24186(未授权上传):从文章页 JS 中提取 wmuSecurity nonce,以 action=wmuUploadFiles POST PHP 文件,文件头加 GIF89a 伪装图片,上传成功后按返回路径触发。

Simple File List CVE-2020-36847(上传 + 重命名):组合未授权上传与重命名两个功能,先传合法后缀文件,再通过接口把文件改名 .php,即通用的两步上传思路。

共性:插件漏洞入口几乎都在 admin-ajax.php 或插件自身路由上,nonce 提取与参数构造是利用成败的关键。


认证后 RCE:主题编辑器

拿到 admin 后,用后台主题编辑器写当前主题的 404.php 落 webshell——404 页面天然会被触发:

POST /wp-admin/admin-ajax.php
action=themes-edit
edit=<写入 404.php 的 webshell 内容>

写入后访问任意不存在的 URL 即触发执行。


后渗透:配置复用

用 webshell 读取站点根目录的 wp-config.php,取得 DB_PASSWORD 等数据库凭据,再尝试登录后台、SSH、数据库及同站点其他服务——CMS 凭据复用是常见的横向入口。


其他 CMS 的同构思路

  • 用户枚举:Typecho 可从 RSS 的 author 链接拿到用户名,对应 WordPress 的 REST API 枚举。
  • 字典构建:CeWL 抓主题词 + 登录表单爆破,流程与 WordPress 一致。
  • 代码写入:后台模板/主题编辑功能写 shell,是各类 CMS 认证后 RCE 的通用模式。

CMS 测试的三板斧始终是:用户枚举、版本指纹、主题/插件代码写入


复核要点

检查点说明
用户名集合REST API、sitemap、RSS、XML-RPC 差异响应四路交叉
XML-RPC 状态是否开放、是否限速、错误响应是否可区分
插件清单wpscan 结果 + readme.txt 主动穷举双确认
admin 能力主题编辑器是否可写、404.php 是否可触发

防御建议

  1. 禁用或限制 xmlrpc.php 与 REST API 用户枚举端点。
  2. 及时更新核心、主题与插件;移除不再使用的插件而非仅停用。
  3. 生产环境关闭后台文件编辑功能(如 DISALLOW_FILE_EDIT)。
  4. wp-config.php 中的数据库凭据不得与其他系统复用。
  5. 登录接口限速 + 强密码策略,XML-RPC 与表单登录统一防护。
  6. 对插件上传路由的异常调用(如 wmuUploadFiles)建立 WAF 告警。