Gladinet CentreStack / Triofox Hardcoded AES Key Access-Ticket Forgery to Arbitrary File Read (CVE-2025-14611)
by pl4tyz · 2026-07-06
- Severity
- Critical
- CVE
- CVE-2025-14611
- Category
- web
- Affected product
- Gladinet CentreStack and Triofox (GladCtrl64.dll / filesvr.dn file-download handler)
- Affected versions
- All versions prior to 16.12.10420.56791
- Disclosed
- 2026-07-06
- Patch status
- unpatched
Tags
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-06 |
| Last Updated | 2026-07-06 |
| Author / Researcher | pl4tyz |
| CVE / Advisory | CVE-2025-14611 |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.8 (per repository) |
| Status | Weaponized |
| Tags | gladinet, centrestack, triofox, hardcoded-key, aes-256-cbc, access-ticket-forgery, arbitrary-file-read, authentication-bypass, iis-app-pool, python, cwe-798, cwe-321 |
| Related | CVE-2025-30406 |
Affected Target
| Field | Value |
|---|---|
| Software / System | Gladinet CentreStack and Triofox (GladCtrl64.dll / filesvr.dn file-download handler) |
| Versions Affected | All versions prior to 16.12.10420.56791 |
| Language / Platform | Windows/IIS server (.NET), Python 3 PoC (pycryptodome) |
| Authentication Required | No (empty username/password triggers a fallback to the IIS Application Pool Identity) |
| Network Access Required | Yes |
Summary
CentreStack and Triofox protect file-download “access tickets” with AES-256-CBC, but the encryption key and IV are not generated per-installation — they are static byte strings hardcoded in GladCtrl64.dll’s .data section and returned verbatim by the misleadingly-named GenerateSecKey/GenerateSecKey1 functions. Because the same key/IV are baked into every deployment, anyone who reverse-engineers the DLL once can decrypt and forge tickets for any CentreStack/Triofox instance in the world. A forged ticket with an empty username/password causes the filesvr.dn handler to fall back to the IIS Application Pool Identity, and a timestamp of year 9999 makes the ticket never expire — together giving an unauthenticated attacker a persistent, universal arbitrary-file-read primitive (e.g. to steal web.config, whose machineKey values can then be used to chain into CVE-2025-30406 ViewState deserialization RCE).
Vulnerability Details
Root Cause
GenerateSecKey/GenerateSecKey1 in GladCtrl64.dll do not generate anything — they return fixed UTF-16LE strings stored at static memory offsets, converted to UTF-8 and truncated to the required key/IV lengths:
Key Source (0x18000c000): 100-byte UTF-16LE Chinese-language string
IV Source (0x18000c2c0): 100-byte UTF-16LE string beginning "moDriv..."
AES-256 Key = first 32 bytes of UTF-8(Key Source)
AES IV = first 16 bytes of UTF-8(IV Source)
AES-256 Key: e4b88de8bf87efbc8ce8b083e69fa5e4b99fe698bee7a4baefbc8ce697a5e69c
AES IV: 6d6f4472697665e381afe38081e38389
These constants never change across installations. Access tickets are newline-separated Filepath / Username / Password / Timestamp records encrypted with this fixed key/IV and passed via the t query parameter to the filesvr.dn handler (GladinetStorage.FileDownloadHandler), which URL-desafes (:→+, |→/), Base64-decodes, and AES-CBC-decrypts the ticket using the same hardcoded SysKey/SysKey1. When the decrypted Username/Password fields are empty, the impersonation setup fails silently and the handler falls back to running as the IIS Application Pool Identity — serving the requested file with elevated privileges and no credentials at all.
Attack Vector
- Attacker (having reverse-engineered
GladCtrl64.dllonce, as documented in this repo) knows the fixed AES-256 key and IV used by every CentreStack/Triofox installation. - Attacker crafts a plaintext ticket:
<absolute path to target file>\n\n\n9999-11-27 14:52:04.009217(empty username/password, far-future timestamp). - Attacker AES-256-CBC-encrypts the ticket, Base64-encodes it, and URL-safes it (
+→:,/→|). - Attacker sends
GET /storage/filesvr.dn?t=<forged_ticket>to the target server; empty credentials trigger the IIS Application Pool Identity fallback, and the never-expiring timestamp bypasses the 4-hour ticket-age check. - The server returns the contents of the requested file (e.g.
web.config), which may containmachineKeyvalues usable to chain into CVE-2025-30406 for full RCE.
Impact
Unauthenticated arbitrary file read with elevated (IIS Application Pool) privileges, and a practical path to remote code execution when chained with CVE-2025-30406 via leaked ASP.NET machine keys. Actively exploited in the wild since at least November 2025.
Environment / Lab Setup
Target: Gladinet CentreStack or Triofox instance prior to 16.12.10420.56791
Attacker: Python 3, `pip install pycryptodome`
Known constants (from repo's reverse engineering of GladCtrl64.dll):
AES_KEY = e4b88de8bf87efbc8ce8b083e69fa5e4b99fe698bee7a4baefbc8ce697a5e69c
AES_IV = 6d6f4472697665e381afe38081e38389
Proof of Concept
PoC Script
See
exploit.pyin this folder.
| |
Detection & Indicators of Compromise
GET /storage/filesvr.dn?t=<base64-url-safe ciphertext> HTTP/1.1
Known real-world indicator (encrypted representation of the web.config path):
/storage/filesvr.dn?t=vghpI7EToZUDIZDdprSubL3mTZ2
Observed attacker source IP: 147.124.216[.]205
Signs of compromise:
- Requests to
/storage/filesvr.dnwith atparameter, especially from unauthenticated/anonymous sessions - IIS/application logs showing the ticket handler running under the Application Pool Identity rather than an impersonated user
- Access to
web.configor other sensitive files via the file-download handler outside of normal application flows - Subsequent ViewState-related anomalies (potential CVE-2025-30406 chaining) after a
web.configread
Remediation
| Action | Detail |
|---|---|
| Primary fix | Update CentreStack/Triofox to version 16.12.10420.56791 or later, which addresses the hardcoded key issue |
| Interim mitigation | Rotate ASP.NET machineKey values in web.config immediately after patching; monitor/alert on requests to /storage/filesvr.dn with suspicious t parameters; restrict network access to CentreStack/Triofox from untrusted networks |
References
Notes
Mirrored from https://github.com/pl4tyz/CVE-2025-14611-CentreStack-and-Triofox-full-Poc-Exploit on 2026-07-06. exploit.py contains hardcoded AES key/IV and full ticket encrypt/decrypt logic matching a detailed reverse-engineering writeup, including real-world exploitation IOCs observed since November 2025.
| |