Nxploited/CVE-2025-15521
PoC files
3 filesFile viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.
Analysis
Technical assessment
Python script that exploits CVE-2025-15521 in Academy LMS ≤ 3.5.0 by extracting a public nonce from course pages, triggering an unauthenticated password reset for a target user_id, enumerating usernames, and performing strict login verification to confirm account takeover.
Backdoor review
No backdoor observed in reviewed code
The supplied evidence consists of a Python script (CVE-2025-15521.py) and a README.md that together implement a proof-of-concept exploit for CVE-2025-15521, an unauthenticated privilege escalation vulnerability in the Academy LMS WordPress plugin. The script automates extraction of a publicly exposed nonce, triggers a password reset for a chosen user ID, enumerates usernames, and attempts strict login verification. All behavior is consistent with the described exploit and does not contain any concealed backdoor, unrelated payload, or deceptive functionality. No obfuscation, persistence mechanisms, credential exfiltration to external parties, or operator-directed harm beyond the stated exploit are present.
Classification basis and observed behavior
Classification basis
The script actively exploits the vulnerability by extracting a nonce, triggering a password reset, and verifying account takeover through login and admin access checks. It goes beyond detection or scanning by modifying user credentials and confirming unauthorized access.
CVE-2025-15521.py:314-359CVE-2025-15521.py:514-581README.md:52-61Requirements
- Target running Academy LMS ≤ 3.5.0 with course pages exposing academy_nonce
README.md:25-27 - Target URL list file with one URL per line
CVE-2025-15521.py:712-715
Observed behavior
- Extracts academy_nonce from course pages via regex patterns
CVE-2025-15521.py:208-240 - Sends POST request to reset handler with extracted nonce, new password, and user_id to change password without authentication
CVE-2025-15521.py:314-359 - Enumerates usernames via author ID redirects and REST API
CVE-2025-15521.py:375-417 - Attempts WordPress login with new password and verifies admin access via admin UI markers
CVE-2025-15521.py:514-581 - Writes confirmed account credentials to output file
CVE-2025-15521.py:623-629
Behaviors behind the backdoor verdict
Observables
- Exploit Behavior
- Automated password reset and login verification for CVE-2025-15521The script performs the exact steps described in the README: nonce extraction from course pages, password reset via POST to /academy-retrieve-password/, username enumeration via author archives and REST API, and strict admin access verification. This is consistent with a legitimate PoC for the stated vulnerability.
CVE-2025-15521.py:208-240CVE-2025-15521.py:314-359CVE-2025-15521.py:375-417CVE-2025-15521.py:514-581 - Output File Writing
- Writes verified access entries to a user-specified output fileThe script writes successful login credentials (username and password) to a local file. This is part of the stated functionality to record confirmed access and does not involve exfiltration to a remote server.
CVE-2025-15521.py:624-628 - Author Contact
- Nxploited (Khaled Alenazi), GitHub: https://github.com/Nxploited, Telegram: @KNxploitedAuthor identification is present in the script banner and README. This is standard attribution and does not constitute backdoor behavior.
CVE-2025-15521.py:6-8README.md:151-152
What the analysis did not establish
- One file (likely .gitignore or similar) omitted from text content; no impact on classification.
- Evidence not executed; classification based solely on static analysis of provided source code and documentation.
- One file (unclassified, 1505 bytes) was present in the repository but not included as text; its content is unknown and could not be reviewed.
- Binary files were flagged as metadata-only and not analyzed; no binary files were reported in the evidence.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.