Snow Monkey Forms — Unauthenticated Arbitrary File Deletion via Path Traversal (CVE-2026-1056)
by Sarawut Poolkhet (MisterHelloz) · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-1056
- Category
- web
- Affected product
- Snow Monkey Forms (WordPress plugin)
- Affected versions
- <= 12.0.3
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-01 |
| Author / Researcher | Sarawut Poolkhet (MisterHelloz) |
| CVE / Advisory | CVE-2026-1056 |
| Category | web |
| Severity | Critical |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | wordpress, plugin, snow-monkey-forms, path-traversal, file-deletion, unauthenticated, rest-api, csrf-bypass |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Snow Monkey Forms (WordPress plugin) |
| Versions Affected | <= 12.0.3 |
| Language / Platform | PHP / WordPress REST API, PoC written in Python 3 |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
Snow Monkey Forms’ REST API route handler (Snow_Monkey\Plugin\Forms\App\Rest\Route\View.php) contains a logic flaw where supplying method=input causes the handler to skip its CSRF token validation entirely and jump straight to the _send() cleanup routine. That routine builds a per-user temporary directory path using an attacker-controlled form_id/formid value that is never validated to be numeric, and WordPress’s path_join() helper does not strip ../ traversal sequences. As a result, an unauthenticated attacker can direct the plugin to recursively delete an arbitrary directory/file on the server by supplying a traversal payload as the formid. The PoC crafts the required cookie/Referer bypass values and sends the malicious REST request.
Vulnerability Details
Root Cause
View::send() conditionally bypasses Csrf::validate() whenever the request’s method field equals input, and the resulting _send() code path passes an unsanitized, attacker-controlled form_id into Directory::generate_user_dirpath(), which concatenates it into a filesystem path without resolving or blocking ../ sequences before calling Directory::do_empty() and Directory::remove().
Attack Vector
- Identify a target running Snow Monkey Forms (check
/wp-content/plugins/snow-monkey-forms/readme.txtfor version). - Set a static alphanumeric value for the
_snow-monkey-forms-tokencookie to satisfy the plugin’s regex check, and set theRefererheader to the site’s own base URL to pass the Referer check. POSTto/wp-json/snow-monkey-form/v1/viewwithsnow-monkey-forms-meta[method]=input(bypassing CSRF) andsnow-monkey-forms-meta[formid]set to a directory traversal payload pointing at the target file/directory.- The plugin recursively deletes the resolved path if the web server process has write/delete permission there.
Impact
An unauthenticated attacker can delete arbitrary files or directories on the server (subject to filesystem permissions), which can be used for denial of service (e.g. deleting wp-config.php to break the site) or to remove security artifacts/logs.
Environment / Lab Setup
Target: WordPress site running Snow Monkey Forms <= 12.0.3
Attacker: Python 3.x, `pip install requests`
Proof of Concept
PoC Script
See
exploit.pyin this folder.
| |
The script sends a crafted POST to /wp-json/snow-monkey-form/v1/view with a static token cookie, a matching Referer header, method=input to bypass CSRF validation, and the supplied traversal payload as the formid, reporting whether the request was accepted (HTTP 200) versus rejected (HTTP 403 from the Referer check).
Detection & Indicators of Compromise
POST /wp-json/snow-monkey-form/v1/view HTTP/1.1
Cookie: _snow-monkey-forms-token=poc12345
Referer: <site base URL>
snow-monkey-forms-meta[method]=input&snow-monkey-forms-meta[formid]=../../../../wp-config.php
Signs of compromise:
- Missing files/directories under
wp-content/uploads/smf-uploads/or elsewhere that correspond to traversal targets. - REST API access logs showing POSTs to
/wp-json/snow-monkey-form/v1/viewwithmethod=inputandformidvalues containing../. - Sudden site breakage (e.g. missing
wp-config.phpor plugin files) with no corresponding admin action.
Remediation
| Action | Detail |
|---|---|
| Primary fix | Update Snow Monkey Forms to a version newer than 12.0.3 per the Wordfence advisory |
| Interim mitigation | Deactivate the plugin until patched; block REST API requests to snow-monkey-form/v1/view containing method=input at the WAF layer; restrict filesystem write permissions for the web server user |
References
Notes
Mirrored from https://github.com/ch4r0nn/CVE-2026-1056-POC on 2026-07-05.
| |