Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify target running LearnPress ≤4.3.6
-
DeliverySend GET to /wp-json/lp/v1/courses/archive-course?c_status=all&return_type=json
-
ExploitBypass publish-only post_status filter via c_status=all
-
ExecutionSuppress safe DISTINCT(ID) field projection via return_type=json
-
PersistReceive SELECT * JSON response
-
ImpactExtract post_password, post_content, post_author of protected/unpublished courses
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the LearnPress plugin to be active on a WordPress installation (versions up to and including 4.3.6) and the WordPress REST API to be publicly accessible (default configuration). The attacker must supply exactly two query parameters in a single request: c_status=all (bypasses the post_status='publish' WHERE clause) AND return_type=json (suppresses the DISTINCT(ID) AS ID field override). Both parameters must be present simultaneously - either alone is insufficient to trigger the full unrestricted SELECT *. No authentication is required (PR:N confirmed by CVSS vector). No special WordPress roles, plugin settings, or non-default configurations are needed beyond the plugin being installed and active. Exploitation is limited to reading data from the WordPress posts table for LearnPress course post types; it does not provide write access, code execution, or access to non-course post types. Sites that have removed or restricted the WordPress REST API via firewall, .htaccess, or plugin (e.g., Disable REST API) are not exploitable via this vector. |
| Impact | The CVSS 3.1 base score of 5.3 (Medium) with vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N understates operational risk in specific deployment contexts. While the confidentiality impact is scored Low (C:L) - reflecting partial rather than full system disclosure - the actual data exposed is high-value: plaintext course passwords and the full body of unreleased course content represent material business and security risk for e-learning operators. The attack complexity is genuinely Low: no authentication, no interaction, no race condition - a single HTTP GET with two known parameters suffices. EPSS data was not provided; however, given the unauthenticated, network-accessible nature and clear exploitation instructions in the CVE description, opportunistic scanning is a realistic threat vector. No CISA KEV listing and no confirmed public exploit code temper urgency, but the trivially scriptable nature means proof-of-concept development requires minimal skill. The vulnerability is not a false high-CVSS issue - the CVSS score arguably underrepresents real-world impact for sites with confidential unpublished content or password-gated courses. There is no conflicting signal between CVSS vector and the description; both consistently indicate unauthenticated network exploitation. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a single HTTP GET request to https://target-site.com/wp-json/lp/v1/courses/archive-course?c_status=all&return_type=json with no credentials. The plugin's REST controller passes both parameters to the database query builder, where c_status=all suppresses the publish-only WHERE clause and return_type=json suppresses the safe DISTINCT(ID) field projection, causing a SELECT * query to return all course rows regardless of visibility status. The attacker receives a JSON response containing the plaintext post_password for every password-protected course and the full post_content, post_author, and post_name of every draft, private, and pending course - allowing them to access gated content, enumerate unpublished material, or target course authors. No public exploit code has been identified at time of analysis, but the exploitation path is fully described in the CVE and requires no specialized tooling. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 06, 2026
Sensitive information exposure in LearnPress WordPress LMS Plugin (all versions through 4.3.6) allows unauthenticated remote attackers to extract plaintext passwords and unpublished course content via a crafted REST API request. The /wp-json/lp/v1/courses/archive-course endpoint accepts two query parameters - c_status=all and return_type=json - that together bypass a publish-only post_status filter and suppress a safe DISTINCT(ID) field override, triggering an unrestricted SELECT * fallback query against the WordPress posts table. Exposed data includes post_password in plaintext for password-protected courses, and post_content, post_author, and post_name for draft, private, and pending courses. No public exploit has been identified at time of analysis and the vulnerability is not listed in CISA KEV, though the unauthenticated, low-complexity attack vector makes it trivially scriptable at scale.
RemediationAI
Upstream fix available (changeset 3545523 in the WordPress plugin SVN repository at https://plugins.trac.wordpress.org/changeset?reponame=&old=3545523%40learnpress&new=3545523%40learnpress); a released patched version is not independently confirmed from the available input data - verify the current version in the WordPress plugin directory and update to the latest available release. Until a confirmed patched version is installed, site administrators should apply the following compensating controls: use a Web Application Firewall rule to block requests to /wp-json/lp/v1/courses/archive-course containing both c_status=all and return_type=json simultaneously (note: blocking either parameter alone may still allow partial information leakage depending on plugin logic); restrict REST API access to authenticated users only via WordPress authentication filters if course browsing by guests is not required (trade-off: breaks unauthenticated course catalog browsing); and audit password-protected courses to assess whether post_password exposure represents an acceptable risk pending patching. The Wordfence threat intel page at https://www.wordfence.com/threat-intel/vulnerabilities/id/a32a6ea3-4473-4075-b660-9bba083ae0bf should be monitored for a confirmed patched version number.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
LearnPress (CPE: cpe:2.3:a:thimpress:learnpress_-_wordpress_lms_plugin_for_create_and_sell_online_courses:*:*:*:*:*:*:*:*) is a WordPress LMS plugin by ThimPress. Its frontend REST API controller (class-lp-rest-courses-controller.php, line 68/196) exposes a course archive endpoint that passes user-controlled parameters to the Courses model (Courses.php, lines 126/200) and ultimately to the database layer (class-lp-course-db.php line 472, class-lp-db.php line 610). The root cause is CWE-862 (Missing Authorization): the post_status WHERE clause that restricts results to published posts is only enforced when c_status is absent or not 'all', and the safe DISTINCT(ID) AS ID field projection that limits column exposure is only applied when return_type is not 'json'. Combining both parameters simultaneously satisfies neither protective branch, collapsing to an unrestricted SELECT * against wp_posts with no visibility controls. WordPress natively stores post_password as plaintext in the posts table, meaning no additional decryption is required by the attacker.
Know when Learnpress Wordpress Lms Plugin For Create And Sell Online Courses gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Primary rating from Vendor (Wordfence) · only source for this CVE.
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The LearnPress - WordPress LMS Plugin for Create and Sell Online Courses plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to, and including, 4.3.6 via the 'return_type' parameter. This makes it possible for unauthenticated attackers to extract sensitive data including the plaintext post_password of password-protected courses and the full post_content, post_author, and post_name of unpublished draft, private, and pending courses via the unrestricted SELECT * fallback query. Exploitation requires supplying both c_status=all (to bypass the publish-only post_status WHERE clause) and return_type=json (to prevent the safe DISTINCT(ID) AS ID field override) in a single unauthenticated request to the /wp-json/lp/v1/courses/archive-course endpoint.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Unauthenticated PHP object injection in the LearnPress WordPress LMS plugin through version 4.4.10 allows attackers to s
Unauthenticated data deletion in LearnPress WordPress LMS plugin (versions ≤4.3.2.8) allows remote attackers to delete a
Sensitive information exposure in the LearnPress LMS plugin for WordPress (versions up to and including 4.4.1) lets unau
Unauthenticated attackers can read and download course-material files - including uploaded file paths and external URLs
Stored cross-site scripting in the LearnPress WordPress LMS plugin (all versions up to and including 4.4.10) lets attack
Course enrollment data exposure in LearnPress WordPress LMS plugin (all versions through 4.3.9.1) enables authenticated
An authorization bypass in the LearnPress WordPress LMS plugin (all versions through 4.4.10) lets any authenticated user
Stored cross-site scripting in LearnPress - WordPress LMS Plugin versions through 4.3.9.1 allows authenticated contribut
Stored Cross-Site Scripting in the LearnPress WordPress LMS plugin (versions up to and including 4.4.0) allows authentic
Stored Cross-Site Scripting in LearnPress WordPress LMS Plugin up to version 4.3.3 allows authenticated contributors to
LearnPress WordPress LMS plugin versions through 4.4.7 reflect unsanitized input from the 'orderby' parameter into the D
SQL injection in the LearnPress WordPress LMS plugin (versions ≤ 4.4.4) allows authenticated administrators to extract a
EUVD-2026-34952
GHSA-ff97-5vqv-578m
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB