WordPress "Form Maker" Plugin Unauthenticated SQL Injection — CVE-2026-3359
by itsthalisman · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-3359
- Category
- web
- Affected product
- WordPress "Form Maker" plugin by Web10
- Affected versions
- All versions up to and including 1.15.42
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Tags
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-06 |
| Author / Researcher | itsthalisman |
| CVE / Advisory | CVE-2026-3359 |
| Category | web |
| Severity | Critical |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | wordpress, sql-injection, form-maker, unauthenticated, admin-ajax, wp-plugin, data-exfiltration |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | WordPress “Form Maker” plugin by Web10 |
| Versions Affected | All versions up to and including 1.15.42 |
| Language / Platform | Python 3 (requests, BeautifulSoup, termcolor) targeting PHP/WordPress |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
The WordPress “Form Maker” plugin (up to version 1.15.42) passes attacker-controlled input from a crafted inputs[2|type_checkbox|all] field on the admin-ajax.php?action=fm_reload_input endpoint into a SQL query without adequate sanitization, allowing unauthenticated SQL injection. The PoC first retrieves the plugin’s fm_cookie and AJAX nonce from the public-facing form page, then submits a crafted checkbox-input payload embedding a UNION-based SQL subquery. A proof-of-concept query returns a marker value (“1”) reflected back in the checkbox HTML if the target is vulnerable, and a follow-up mode extracts user_login, user_email, and user_pass from the wp_users table via a UNION SELECT injected through the same parameter.
Vulnerability Details
Root Cause
The Form Maker plugin’s AJAX handler for fm_reload_input builds a SQL query using unsanitized values from the inputs[2|type_checkbox|all] POST parameter, allowing arbitrary SQL fragments (subqueries, UNION SELECT) to be injected into the executed statement.
Attack Vector
- Send an unauthenticated GET request to the target site to harvest the
fm_cookieand the page’s embedded AJAX nonce. - POST a crafted
inputs[2|type_checkbox|all]value to/wp-admin/admin-ajax.phpwithaction=fm_reload_inputandform_id=6, embedding a SQL subquery (e.g.(SELECT 1 AS \1`) AS t–`) in place of the expected field value. - Parse the JSON response’s embedded HTML for a checkbox
valueattribute; if it reflects the injected query result (e.g. “1”), the target is confirmed vulnerable. - Replace the PoC subquery with a UNION SELECT against
wp_users(user_login,user_email,user_pass) to exfiltrate WordPress user credentials directly through the reflected checkbox values.
Impact
An unauthenticated remote attacker can execute arbitrary SQL queries against the WordPress database, enabling full extraction of user credentials (including password hashes) and potentially further database compromise.
Environment / Lab Setup
Target: WordPress site with Form Maker plugin <= 1.15.42 installed and active (form_id=6 used in PoC)
Attacker: Python 3, requests, beautifulsoup4, termcolor (see requirements.txt)
Proof of Concept
PoC Script
See
cve-2026-3359.pyandrequirements.txtin this folder.
| |
The script fetches the target’s fm_cookie and AJAX nonce, then sends a crafted fm_reload_input AJAX request embedding a benign SQL subquery; if the reflected checkbox value equals “1” the target is flagged vulnerable. Running with -qu instead of -poc swaps the payload for a UNION SELECT against wp_users to dump usernames, emails, and password hashes; -l <file> allows batch testing a list of target URLs.
Detection & Indicators of Compromise
Signs of compromise:
- POST requests to
admin-ajax.phpcontaining SQL keywords (UNION,SELECT,wp_users) inside theinputs[2|type_checkbox|all]parameter. - Repeated
fm_reload_inputAJAX calls from the same IP with varying injected subqueries (indicative of automated scanning/extraction). - Unexpected disclosure of
wp_usersdata (login names, emails, password hashes) via web application responses.
Remediation
| Action | Detail |
|---|---|
| Primary fix | No vendor patch confirmed as of 2026-07-05 — monitor for advisory; update Form Maker to the first release addressing CVE-2026-3359 once available. |
| Interim mitigation | Disable or restrict access to the Form Maker plugin’s AJAX endpoints, deploy a WAF rule blocking SQL metacharacters/keywords in the inputs parameter, and use a least-privilege database account for the WordPress application. |
References
Notes
Mirrored from https://github.com/itsthalisman/cve-2026-3359-exp on 2026-07-05.
| |