Frontend Admin by DynamiApps — Unauthenticated Administrator Account Creation (CVE-2025-13342)
by Nxploited (Khaled Alenazi) · 2026-07-06
- Severity
- Critical
- CVE
- CVE-2025-13342
- Category
- web
- Affected product
- Frontend Admin by DynamiApps (WordPress plugin built on Advanced Custom Fields / ACF frontend forms)
- Affected versions
- <= 3.28.20 (fixed in 3.28.21, per source repository)
- Disclosed
- 2026-07-06
- Patch status
- patched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-06 |
| Last Updated | 2026-07-06 |
| Author / Researcher | Nxploited (Khaled Alenazi) |
| CVE / Advisory | CVE-2025-13342 |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, per NVD) |
| Status | Weaponized |
| Tags | wordpress, wordpress-plugin, frontend-admin, dynamiapps, acf, advanced-custom-fields, broken-access-control, cwe-284, privilege-escalation, unauthenticated, admin-takeover, python |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Frontend Admin by DynamiApps (WordPress plugin built on Advanced Custom Fields / ACF frontend forms) |
| Versions Affected | <= 3.28.20 (fixed in 3.28.21, per source repository) |
| Language / Platform | PoC written in Python 3 (requests, beautifulsoup4, colorama, rich); target is a WordPress site running the vulnerable plugin |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
CVE-2025-13342 is a critical, fully unauthenticated privilege-escalation vulnerability in the Frontend Admin plugin for WordPress (<= 3.28.20). The plugin’s ACF-powered frontend registration/form-submission handler accepts user-controlled acff[user][field_*] form fields — including the field that sets the newly created WordPress user’s role — without any capability check or server-side validation restricting which roles a public, unauthenticated visitor may assign to themselves. A public-facing “frontend form” (commonly a self-service registration page built with the plugin) therefore becomes an open channel through which anyone can submit role=administrator alongside their username/email/password and receive a full Administrator account. The included Python tool automates discovery of such forms across a list of targets and submits the crafted payload directly, producing a working administrator login on any vulnerable site in a single AJAX request.
Vulnerability Details
Root Cause
The plugin’s frontend form-submission AJAX handler (action=frontend_admin/form_submit, backed by the plugin’s ActionOptions/user-creation save logic) writes submitted acff[user][field_*] values — including the mapped “role” field — into the newly created WP_User without validating that an anonymous, unauthenticated submitter is permitted to set that value to administrator (CWE-284: Improper Access Control / Insufficient Capability Check). Because ACF frontend forms expose each user field as a generically-named field_<hash> input, the exploit first has to discover which field_* corresponds to role by parsing the form’s data-type="role" / label metadata, then simply sets that field to administrator before submitting:
| |
Attack Vector
- The tool crawls a target site across 28 common registration-related paths (
/register/,/signup/,/my-account/,/frontend-form/, etc.) looking for a form. - For each page, it parses the HTML for the ACF frontend-form fingerprint: hidden
_acf_nonceand_acf_formfields plus visible inputs namedacff[user][field_*]. - It maps the discovered
field_*IDs to logical roles (username, email, password, role, first/last name) using each field’s ACFdata-type/label text (e.g.data-type="role"or label containing “role”). - It builds a POST payload to
/wp-admin/admin-ajax.phpwithaction=frontend_admin/form_submit, the form’s own_acf_nonce/_acf_formtokens, attacker-chosen username/email/password, and the discovered role field forced toacff[user][field_X]=administrator. - The plugin’s handler processes the request, creates a new WordPress user, and — because the role value is never validated against the requester’s actual privileges — assigns it the Administrator role.
- A
{"success":true}JSON response confirms the account was created; the attacker logs into/wp-admin/with the new administrator credentials.
Impact
Complete, unauthenticated takeover of any WordPress site running the vulnerable plugin version: the attacker obtains a full Administrator account, which in WordPress enables arbitrary plugin/theme installation (leading to PHP code execution/RCE), content and user management, database access via plugins, and exfiltration or destruction of site data.
Environment / Lab Setup
Target: WordPress site with "Frontend Admin by DynamiApps" <= 3.28.20 active, exposing a public
ACF frontend registration/user-creation form on one of the tool's scanned paths.
Attacker: Python 3.8+, pip install requests beautifulsoup4 colorama rich
(see requirements.txt in the source repository)
Proof of Concept
PoC Script
See
CVE-2025-13342.pyin this folder.
| |
The tool is interactive and prompts for:
Targets file path → list.txt (one host per line, scheme optional, e.g. https://TARGET or TARGET)
Threads → 10
Timeout (seconds) → 10
Verbose debug → y / N
Credentials for the created account are fixed internally in the script (Nxadmin1 / nxploitedtest@gmail.com / NxAdmin_1337#KSA); successful admin creations are appended to acf_success.txt with a timestamp, target base, discovered form URL, and the JSON response.
Detection & Indicators of Compromise
POST /wp-admin/admin-ajax.php
Content-Type: application/x-www-form-urlencoded
...
action=frontend_admin%2Fform_submit&_acf_nonce=...&_acf_form=...&acff%5Buser%5D%5Bfield_XXXXXX%5D=administrator&...
-> {"success":true,...}
Signs of compromise:
admin-ajax.phprequests withaction=frontend_admin/form_submitwhere anacff[user][field_*]value equalsadministrator,editor, or another privileged role, from a session with no prior authentication.- Bursts of GET requests to common registration paths (
/register/,/signup/,/frontend-form/, etc.) from a single IP in rapid succession (form-discovery crawl behavior). - Unexpected new users with the Administrator role in
wp_users/wp_usermeta, especially with generic-looking usernames/emails. - Presence of a local
acf_success.txt-style artifact or unfamiliar admin logins shortly after such traffic.
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade “Frontend Admin by DynamiApps” to version 3.28.21 or later, which fixes the missing capability/role validation. |
| Interim mitigation | Disable or remove public-facing ACF frontend registration/user-creation forms until patched; add a WAF rule blocking admin-ajax.php requests where action=frontend_admin/form_submit and any acff[user][field_*] value equals administrator or other elevated roles; audit wp_users for unexpected Administrator accounts and rotate credentials if found. |
References
Notes
Mirrored from https://github.com/Nxploited/CVE-2025-13342 on 2026-07-06. The 605-line script submits a crafted ACF frontend form payload directly to create an admin account (rather than the two-step users_can_register/default_role approach also possible against this bug); the field-discovery and payload-mapping logic is specific and non-trivial, not a generic template.
| |