HAXcms createSite SSRF Enables Arbitrary File Read
HAXcms is vulnerable to Server-Side Request Forgery (SSRF) via the createSite endpoint, allowing an authenticated user to supply arbitrary URLs or local file paths, which are fetched server-side without validation and written to a web-accessible directory, enabling arbitrary file read, internal network access, and cloud credential exposure; this vulnerability is tracked as CVE-2026-46393.
HAXcms (v11.0.6) is vulnerable to Server-Side Request Forgery (SSRF) via the createSite endpoint due to insufficient validation of the build.files parameter. An authenticated user can supply arbitrary URLs or local file paths, which are then fetched server-side using file_get_contents() without validation. This allows for reading arbitrary files, accessing internal network services, and potentially exposing cloud credentials through metadata endpoints. This vulnerability was disclosed in GHSA-q862-gcgq-5m6g and is tracked as CVE-2026-46393. Exploitation requires an authenticated session, but default credentials are often present on fresh installs, lowering the barrier to entry.
Attack Chain
- Attacker authenticates to the HAXcms application using credentials (default
admin/adminmay work on fresh installs). - The attacker obtains a valid JWT and CSRF token from the authenticated session.
- The attacker crafts a POST request to the
/createSiteendpoint with a JSON payload. - The payload includes a
build.filesparameter containing a filename (e.g.,poc.txt) as the key and atmp_namevalue set to the target URL or file path (e.g.,http://169.254.169.254/latest/meta-data/iam/security-credentials/or/etc/passwd). - The HAXcms server processes the
build.filesparameter, extracting thetmp_namevalue without validation. - The server uses
file_get_contents()to fetch the content from the URL or file path specified intmp_name. - The fetched content is saved to the
sites/<sitename>/files/<filename>directory. - The attacker retrieves the content by sending a GET request to
sites/<sitename>/files/<filename>, thus achieving arbitrary file read or access to internal resources.
Impact
This SSRF vulnerability can be exploited by any authenticated user to access sensitive information. Successful exploitation allows attackers to read arbitrary files from the server’s file system (e.g., /etc/passwd, application configuration files), access internal network services, and potentially expose cloud credentials through metadata endpoints like http://169.254.169.254. This could lead to complete compromise of the server and potentially the associated cloud environment. The affected package npm/@haxtheweb/haxcms-nodejs (vulnerable: <= 25.0.0) means that many instances of HAXcms may be affected.
Recommendation
- Apply available patches or updates to HAXcms to address CVE-2026-46393.
- Monitor web server logs for POST requests to
/createSitewith suspicious URLs or file paths in thebuild.filesparameter, using the Sigma ruleDetect HAXcms createSite SSRF Attempt. - Inspect network connections originating from the HAXcms server for connections to internal IP addresses or cloud metadata endpoints like 169.254.169.254, as highlighted in the IOC section.
- Implement strict input validation on the
build.filesparameter of the/createSiteendpoint to prevent arbitrary URL and file path injection.
Detection coverage 2
Detect HAXcms createSite SSRF Attempt
highDetects attempts to exploit the HAXcms createSite SSRF vulnerability (CVE-2026-46393) by identifying POST requests to /createSite with suspicious URLs or file paths in the build.files parameter.
Detect HAXcms Arbitrary File Access via SSRF
mediumDetects access attempts to files within the HAXcms sites directory after potential SSRF exploitation (CVE-2026-46393).
Detection queries are available on the platform. Get full rules →
Indicators of compromise
1
ip
1
url
| Type | Value |
|---|---|
| url | http://attacker.com |
| ip | 169.254.169.254 |