CVE-2026-88771 Exploitation Targets Citrix NetScaler Appliances
Detection stack
- AIDR
- Alert
- ETL
- Query
Summary
Threat actor clusters are actively exploiting the Citrix NetScaler zero-day vulnerability CVE-2026-88771 to deploy multiple web shells and remote management tools. Observed activity includes PHP-based web shells, the Platypus fleet management framework, Perl-based installers, and Python reverse shells. Exploitation was detected both before disclosure and shortly after the vulnerability became public.
Investigation
eSentire’s Threat Response Unit identified several distinct attack clusters targeting NetScaler appliances. Researchers grouped the activity into four categories: a lightweight PHP web shell cluster, a Platypus deployment cluster, a Perl-based web shell installer cluster, and a Python reverse shell cluster. Technical analysis focused on web shell source code, staging scripts, and post-exploitation command behavior.
Mitigation
Organizations should prioritize patching Citrix NetScaler appliances in accordance with vendor security bulletins such as CTX697096. Security teams should monitor for unauthorized Apache configuration changes, modifications to /bin/sh permissions involving SUID or SGID bits, and unexpected files created within NetScaler directories. Strong egress filtering can also help disrupt reverse-shell C2 communications.
Response
When exploitation artifacts are detected, immediately isolate the affected NetScaler appliance to limit lateral movement. Review Apache access logs, system configuration files such as /etc/httpd.conf and /flash/nsconfig/ns.conf, and scheduled cron jobs. Identify and remove unauthorized local accounts, malicious web shells, and other persistence mechanisms uncovered during the investigation.
Attack Flow
We are still updating this part.
Detections
Possible CVE-2026-88771 (Citrix NetScaler PreAuth Command Injection) Exploitation Attempt (via webserver)
Remote File Upload / Download via Standard Tools (via cmdline)
Hidden File Was Created On Linux Host (via file_event)
Archive Was Created In Linux Tmp Folder (via file_event)
IOCs (HashSha256) to detect: More Shells Than a Seafood Buffet: Tracking Citrix NetScaler Exploitation Activities (CVE-2026-88771)
IOCs (SourceIP) to detect: More Shells Than a Seafood Buffet: Tracking Citrix NetScaler Exploitation Activities (CVE-2026-88771)
IOCs (DestinationIP) to detect: More Shells Than a Seafood Buffet: Tracking Citrix NetScaler Exploitation Activities (CVE-2026-88771)
Detected Apache Reload Command for Malicious Script Execution [Linux Process Creation]
Apache Configuration File Modification for Unauthorized Web Shell Execution [Webserver]
Citrix NetScaler Exploitation Activities – CVE-2026-88771 [Linux Process Creation]
Simulation Execution
-
Attack Narrative & Commands: An attacker has gained initial access to a web server and seeks to enable a web shell. To ensure the shell executes, the attacker decides to modify the primary Apache configuration file. The attacker appends a directive to force the PHP engine to turn ‘on’ for all files, effectively allowing them to upload a
.txtfile containing PHP code and execute it as a script. This method is chosen to ensure immediate execution without needing to rename files. -
Regression Test Script:
#!/bin/bash # Simulation: Unauthorized Apache Configuration Modification # Goal: Append 'php_flag engine on' to /etc/httpd.conf to trigger the detection rule. TARGET_FILE="/etc/httpd.conf" PAYLOAD="php_flag engine on" if [ ! -f "$TARGET_FILE" ]; then echo "Error: $TARGET_FILE does not exist. Simulation cannot proceed." exit 1 fi echo "[+] Simulating attack: Modifying $TARGET_FILE with payload: $PAYLOAD" # Using sudo to simulate an attacker with elevated privileges (typical in post-exploitation) echo "$PAYLOAD" | sudo tee -a "$TARGET_FILE" > /dev/null if [ $? -eq 0 ]; then echo "[+] Attack simulation successful. Check SIEM for alerts." else echo "[-] Attack simulation failed." fi -
Cleanup Commands:
#!/bin/bash # Cleanup: Remove the injected payload from /etc/httpd.conf TARGET_FILE="/etc/httpd.conf" PAYLOAD="php_flag engine on" echo "[+] Cleaning up: Removing $PAYLOAD from $TARGET_FILE" sudo sed -i "|$PAYLOAD|d" "$TARGET_FILE" echo "[+] Cleanup complete."