Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
CriticalPublic exploit

Academy LMS (WordPress) unauthenticated password change leading to account takeover

IdentifiersCVE-2025-15521CWE-639· Authorization Bypass Through…

CVE-2025-15521 is a privilege-escalation/account-takeover vulnerability in the Academy LMS – WordPress LMS Plugin for Complete eLearning Solution plugin affecting all versions up to and including 3.5.0. The plugin’s password update functionality does not properly validate the requesting user’s identity and relies solely on a publicly exposed WordPress nonce for authorization. As a result, an unauthenticated attacker can obtain/scrape the nonce and submit a request to change the password of an arbitrary user account, including administrator accounts, thereby taking over the account.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Unauthenticated attackers can change passwords for arbitrary WordPress users (including administrators), resulting in full account takeover and privilege escalation to admin-level access. With admin access, attackers can perform administrative actions such as data theft, content/course destruction, malware injection, and payment redirection. CVSS v3.1 vector reported: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8).

Mitigation

If you can’t patch tonight, do this now.

Until patched, reduce exposure by disabling/removing the plugin or blocking the vulnerable password-update endpoint/functionality (e.g., WAF/virtual patching, IP allowlisting). Monitor for suspicious password change activity and unexpected administrator logins; consider enforcing additional controls such as strong admin password policies and MFA where possible.

Remediation

Patch, then assume compromise.

Update Academy LMS to a patched version newer than 3.5.0 (once available from the vendor). If no fixed release is available, remove/disable the plugin and replace it, or apply a vendor-provided patch/hotfix that enforces proper authentication/identity validation for password changes and does not treat a publicly exposed nonce as sufficient authorization.
PUBLIC EXPLOITS

Exploits

1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.

VALID 1 / 1 TOTALView more in app
CVE-2025-15521MaturityPoCVerified exploit

This repository contains a single operational Python exploit, CVE-2025-15521.py, plus a README and license. The exploit targets CVE-2025-15521 in the Academy LMS WordPress plugin up to version 3.5.0. Its purpose is unauthenticated account takeover via an insecure password reset flow that accepts a publicly exposed academy_nonce from course pages and a chosen user_id, allowing password reset without email verification or ownership checks. Repository structure is minimal: one Python script implements the exploit logic, README.md documents the vulnerability, workflow, and usage, and LICENSE contains restrictive redistribution terms. The Python script is interactive and prompts for a targets file, thread count, reset handler path, course path, maximum pages to scan, target user_id, new password, timeout, and output file. Core exploit capability: for each target site, it normalizes the WordPress base URL (including subdirectory installs), scans course-related pages to extract a valid reset nonce, submits a password reset request to the vulnerable handler for a chosen user_id, enumerates candidate usernames using WordPress author redirects and the REST API, then attempts login using the attacker-chosen password. It performs strict success validation by rejecting known login failures, requiring a wordpress_logged_in cookie, and confirming actual wp-admin access using admin UI markers rather than relying on HTTP status alone. Successful compromises are appended to an output file. The exploit is not just a detector; it actively changes account passwords and verifies administrative access. It is best classified as OPERATIONAL rather than a simple PoC because it includes a working exploitation chain and post-exploitation verification, though it is not part of a larger exploitation framework.

NxploitedDisclosed Apr 18, 2026pythonmarkdownwebnetwork
What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity9

Community discussion across Reddit, Mastodon, and other social sources.