
Post-Exploitation Analysis & Artifacts – Citrix NetScaler CVE-2026-88771
watchTowr post-exploitation analysis of CVE-2026-88771, an unauthenticated log-poisoning command injection in Citrix NetScaler (advisory CTX697096). Sensors logged thousands of attempts: about 85% were OOB callbacks, the rest Sliver implants, a trojanized Dropbear SSH backdoor, a Perl stager with a PHP webshell, and SSH-key and secret-harvesting sprays. Includes artifacts to hunt (/var/tmp files, ns_helper, ns.conf edits) and IOC repo pointers.
What it is
watchTowr's honeypot analysis of in-the-wild exploitation of CVE-2026-88771, an unauthenticated command injection in Citrix NetScaler (advisory CTX697096, which fixed eight bugs). The advisory also covers CVE-2026-88772, an unauthenticated DTLS reassembly-buffer overflow. watchTowr says both were exploited as zero-days against government and enterprise targets. The post catalogues what attackers dropped after the bug fired, and gives host artifacts to hunt.
How it works
One crafted request poisons an on-disk log file. A scheduled NetScaler job tied to the Management and Analytics System (MAS) runs the command within the next 24 hours. The script ns_monuploadd_err.pl greps the attacker-controlled line, keeps only the last entry with tail -1, and executes it. Attackers therefore race each other, and only the latest poisoned entry detonates.
A process crash forces execution of the last poisoned entry on the warm reload at restart. watchTowr names a malformed CVE-2026-88772 DTLS request and a SAML DoS, CVE-2026-88779, as crash triggers.
Preconditions / Affected
- An internet-facing NetScaler that is unpatched, or was exposed before patching.
- watchTowr gives no fixed build numbers. Use CTX697096.
- Several payloads depend on config. The Dropbear backdoor is reachable only if the service is exposed via
ns.confon Gateway SSLVPN appliances.
What to do
watchTowr's stance: if the appliance is internet-facing and unpatched, assume compromise. If it is patched, still review it for historical compromise.
Capture volatile evidence (processes, listening sockets, memory-resident implants) before any restart, patch or re-image.
Hunt for these artifacts:
- Anything unusual in
/var/tmp, includingwtw888,cve88771andcve88771_round2(output ofidfrom an LLM-style probe). /var/vpn/ns_helper, a Sliver implant fetched with FreeBSDfetch. It beacons every 60 seconds to the exploit-source IP on port 80 or 443. It uses the User-AgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.9565.730 Safari/537.36. Its URL paths are/scripts/bundles/scripts/app.js?m=,/script/bundles/bundles/route.php?n=,/script/scripts?c=and/javascripts/javascripts/javascripts?m=.- A trojanized static FreeBSD Dropbear SSH 2025.88 listening on tcp/37512. It has the hard-coded password
support1for any account and a hard-coded RSA-2048 key checked beforeauthorized_keys. - Perl stager
update_c08937.pl. Check/flash/nsconfig/ns.conffor agw_healthaccount bound as superuser, and for httpd config edits. - A hidden PHP webshell,
.local_journal, under/var/netscaler/logon/LogonPoint/. httpd routes/logon/LogonPoint/css/LogonUISimple.html.style.min.<HEX>.cssto it. Its password is01ndx0Fk2oK%bCqj. - Use of the older public
.ctxs.receiverwebshell path and its CsrfToken-cookie password, plus follow-up requests runningid. - Spray activity: unexpected
authorized_keysentries in/root/.ssh/,/nsconfig/sshand/nsconfig/.ssh, webshells across 14 directories,pwn.txtmarker files in web-accessible directories, and outbound POSTs of tar archives of config directories. - Callback domains seen:
oast[.]fun,dnshook[.]site,webhook[.]siteand the lookalikectrxsrv[.]com.
watchTowr also published an IOC repository. The page text does not give its URL.
If the harvest sweep ran, treat these as stolen: private keys, Git and cloud credentials, SMTP secrets, bearer tokens, API keys, shell history, and LLM API environment variables (OPENAI, ANTHROPIC, GEMINI, CLAUDE). Rotate them.
Caveats
- About 85% of the thousands of attempts were harmless OOB callbacks. Most of the rest were low-skill and many failed.
- The Perl stager's webshell does not work on default NetScaler.
nsppestripsSet-Cookieon/logon/*, so the PHP session never persists. The superuser it created is management-plane only, so it is unusable from the Gateway side. A failed implant does not mean the config was not exfiltrated, since the stager also compresses and ships/flash/nsconfig. - Calling the first probes LLM-generated is watchTowr's guess.
- The telnet and
.ctxs.receivercredential-hunting is watchTowr's suspicion, not confirmed. - Findings come from watchTowr's sensors in the week after disclosure and may not reflect all actors.
Organisations named here
- CTX697096
- .ctxs.receiver
- Dropbear
- ns_monuploadd_err.pl
- update_c08937.pl
CVEs named here
- CVE-2026-88771
- CVE-2026-88772
- CVE-2026-88779
Technologies named here
- Sliver
- Citrix NetScaler
- SSH
- PHP
- Perl
- WatchTowr
- curl, fetch, telnet
- Dropbear SSH 2025.88 (trojanized)
- NetScaler DTLS implementation (CVE-2026-88772)
- NetScaler SAML (DoS CVE-2026-88779)
- oast[.]fun, dnshook[.]site, webhook[.]site, ctrxsrv[.]com
- watchTowr Indicators of Compromise repository
- watchTowr sensor network
Techniques named here
- Web shell deployment
- Log poisoning
- Command injection
- Account creation for persistence
- Credential and secret harvesting and exfiltration
- Log poisoning leading to command injection
- Out-of-band callback probing
- Process crash to force warm reload
- Sinkholing
- SSH key planting
Threat actors named here
- .ctxs.receiver webshell (publicly documented, password delivered via CsrfToken cookie)
- Perl stager update_c08937.pl (password-keyed PHP webshell, gw_health superuser, config exfiltration)
- Sliver C2 implant operator (staged via fetch to /var/vpn/ns_helper, 60-second beacon)
- Smash-and-grab operator (SSH key and webshell spraying across 14 directories, credential and LLM API key harvesting)
- Trojanized Dropbear SSH 2025.88 backdoor (hard-coded password support1, listens on tcp/37512)
Related in Threat Intel
Reverse Engineering the Six Stages of MacSync Stealer and RAT
AI-Coded Malware | Analyzing Vibe-Coded AD Enumeration | Huntress
